home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / c / inter40b.zip / INTERRUP.H < prev    next >
Text File  |  1994-04-03  |  280KB  |  7,847 lines

  1. Interrupt List, part 8 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------N-2F8000-----------------------------
  4. INT 2F - EASY-NET - INSTALLATION CHECK
  5.     AX = 8000h
  6. Return: AL = 00h not installed
  7.          FFh installed
  8. Program: EASY-NET is a shareware two-machine serial-port network
  9. --------N-2F8000-----------------------------
  10. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  11.     AX = 8000h
  12. Return: AL = FFh if installed
  13.         BX = CS of resident code
  14.         CX = ??? (03FCh)
  15. Program: TurboNET is a NetBIOS-based file redirector and server; a
  16.       demonstration version may be downloaded from Nanosoft's BBS
  17. SeeAlso: AX=8100h
  18. --------t-2F8000-----------------------------
  19. INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
  20.     AX = 8000h
  21.     DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
  22. Return: AL = status
  23.         00h no CS_TSR-compliant TSRs installed
  24.         01h installed, but signature did not match
  25.         FFh installed, signature matches
  26.         ES:DI -> resident process block (see below) of last installed
  27.               TSR (if DS:SI pointed at signature on entry)
  28. Program: the CS_TSR specification is a standardized TSR interface by Compact
  29.       Soft group in Kiev, Ukraine
  30. Desc:    determine whether any CS_TSR-compliant TSRs are installed on the
  31.       selected multiplex number
  32. Note:    AH=80h is the default, but any multiplex number from 80h to FFh may be
  33.       used
  34. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  35.  
  36. Format of process block:
  37. Offset    Size    Description
  38.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  39.  04h    BYTE    INT 2F multiplex number
  40.  05h    WORD    virtual process handle (unique among loaded TSRs)
  41.  07h  2 BYTEs    version (binary minor version, then major version)
  42.  09h    WORD    PSP segment of TSR
  43.  0Bh    DWORD    pointer to ASCIZ program name
  44.  0Fh  3 BYTEs    program creation date (day, month, year)
  45.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  46.  15h  3 BYTEs    process start date (day, month, year)
  47. --------F-2F8000DX0000-----------------------
  48. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  49.     AX = 8000h
  50.     DX = 0000h
  51.     DI = 0000h
  52. Return: AL = FFh if installed
  53.     DX:DI -> signature "FaxBiosjpc"
  54. Note:    FaxBIOS may use any multiplex number from 80h through FFh; to determine
  55.       whether it is installed, it is necessary to poll all multiplex
  56.       numbers for one which returns the above signature
  57. SeeAlso: AH=2Ah,AX=80FBh
  58. --------N-2F8001-----------------------------
  59. INT 2F - Nanosoft, Inc. TurboNET server - ???
  60.     AX = 8001h
  61.     DS:SI -> 16-byte buffer for ???
  62. Return: AH = status
  63.         00h successful
  64.         01h error (TurboNET busy)
  65. Note:    makes NetBIOS calls
  66. --------t-2F8001-----------------------------
  67. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  68.     AX = 8001h
  69.     DS:SI -> ASCIZ signature string for desired TSR (see below)
  70. Return: BX = process handle or 0000h if specified TSR not installed
  71.     ES:DI -> process block for TSR (see AX=8000h"CS_TSR") if BX<>0000h
  72. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  73.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  74.       ASCII v4.23 which is identical except for the changed attribution
  75.       and version (in fact, some instances of "4.23" were missed); the
  76.       hacked copy requires the signature string
  77.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  78.       simple signature "ASCII"
  79. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  80.  
  81. Values for signature strings:
  82.  "ASCII"    ASCII, a popup ASCII table with character input
  83.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  84.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  85. --------t-2F8002-----------------------------
  86. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  87.     AX = 8002h
  88.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  89. Return: ES:DI -> process block for specified TSR (see AX=8000h"CS_TSR")
  90.         unchanged if no match for process handle
  91. Note:    This function is used to allocate a process handle when the TSR
  92.       installs itself, by setting ES:DI to point at something other than
  93.       a CS_TSR process block's signature string and iterating through the
  94.       possible process handles (0001h to FFFFh) until ES:DI is returned
  95.       unchanged
  96. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  97. --------t-2F8003-----------------------------
  98. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  99.     AX = 8003h
  100.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  101.     other registers vary by TSR
  102. Return: vary by TSR, unchanged if not supported
  103. Program: the CS_TSR specification is a standardized TSR interface by Compact
  104.       Soft group in Kiev, Ukraine
  105. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  106. --------F-2F80FB-----------------------------
  107. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  108.     AX = 80FBh
  109.     BX = function number (see below)
  110.     DX:DI -> command buffer (see below)
  111. Return: AL = FFh if submitted OK
  112.     CX = result code (see below)
  113. Note:    FaxBIOS may use any multiplex number from 80h through FFh
  114. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  115.  
  116. Values for function number:
  117.  0001h    SYS_LOGIN
  118.  0002h    SYS_LOGOUT
  119.  0003h    SYS_GET_FAXAPP_INFO
  120.  0004h    STAT_IO_GET
  121.  0005h    STAT_FAXBIOS_GET
  122.  0006h    PDIR_OPEN
  123.  0007h    PDIR_CLOSE
  124.  0008h    PDIR_READ_PERSON
  125.  0009h    PDIR_PARTIAL_READ
  126.  000Ah    PDIR_READ_GROUP
  127.  000Bh    PDIR_READ_MEMBER_LIST
  128.  000Ch    PDIR_WRITE_PERSON
  129.  000Dh    PDIR_WRITE_GROUP
  130.  000Eh    PDIR_DELETE_PERSON
  131.  000Fh    PDIR_DELETE_GROUP
  132.  0010h    PDIR_READ_GROUP_LIST
  133.  0011h    PDIR_IN_GROUP
  134.  0012h    PDIR_OUT_GROUP
  135.  0013h    SCHED_OPEN
  136.  0014h    SCHED_ADD_DEST
  137.  0015h    SCHED_ADD_FILE
  138.  0016h    SCHED_SET_PARAMS
  139.  0017h    SCHED_CANCEL
  140.  0018h    SCHED_CLOSE
  141.  0019h    SLOG_OPEN
  142.  001Ah    SLOG_CLOSE
  143.  001Bh    SLOG_SHORT_ENV_STAT
  144.  001Ch    SLOG_LONG_ENV_STAT
  145.  001Dh    SLOG_DEST_STAT
  146.  001Eh    SLOG_FILE_STAT
  147.  001Fh    SLOG_CANCEL_ENV
  148.  0020h    RLOG_OPEN
  149.  0021h    RLOG_CLOSE
  150.  0022h    RLOG_READ
  151.  0023h    GRAPH_GET_FILE_TYPE
  152.  0024h    GRAPH_EXPORT_FILE
  153.  0025h    GRAPH_GET_LAYOUT_INFO
  154.  0026h    GRAPH_CREATE_FILE
  155.  0027h    GRAPH_CLOSE_FILE
  156.  0028h    GRAPH_CREATE_PAGE
  157.  0029h    GRAPH_WRITE
  158.  002Ah    GRAPH_END_PAGE
  159.  002Bh    GRAPH_OPEN_FILE
  160.  002Ch    GRAPH_GOTO_PAGE
  161.  002Dh    GRAPH_READ
  162.  002Eh    IOCTL_GET
  163.  002Fh    IOCTL_SET
  164.  0030h    IOCTL_ANSWER_FAX
  165.  0031h    IOCTL_DIAL
  166.  
  167. Values for result code:
  168.  0000h    successful
  169.  0001h    not prepared or servicing another client (busy)
  170.  0002h    call failed due to sharing (LOCKED)
  171.  0003h    logged-in client limit reached (FULL)
  172.  0004h    transport denied (TRANSPORT_DENIED)
  173.  0005h    not implemented (NOT_IMPLEMENTED)
  174.  0006h    aborted while in progress (ABORTED)
  175.  0007h    permissions denied (PERMISSION_DENIED)
  176.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  177.  0080h    unspecified system error occurred
  178.  0081h    an internal file was not found
  179.  0082h    an internal file could not be created
  180.  0083h    an internal file could not be opened
  181.  0084h    an internal file could not be closed
  182.  0085h    error occurred writing to an internal file
  183.  0086h    error occurred reading from an internal file
  184.  0087h    bad or corrupted file encountered
  185.  0088h    an access violation occurred
  186.  0089h    an internal file is empty
  187.  008Ah    insufficient memory to process request
  188.  008Bh    FaxBIOS was unable to issue a handle
  189.  008Ch    an error internal to FaxBIOS occurred
  190.  008Dh    no room on disk
  191.  0100h    unspecified error accessing client file
  192.  0101h    file not found
  193.  0102h    creation fault
  194.  0103h    open fault
  195.  0104h    close fault
  196.  0105h    write fault
  197.  0106h    read fault
  198.  0107h    file corrupted
  199.  0108h    access violation
  200.  0109h    empty file
  201.  0200h    unspecified argument error
  202.  0201h    bad function
  203.  0202h    bad option
  204.  0203h    bad structure size
  205.  0204h    bad buffer size
  206.  0205h    bad client ID
  207.  0300h    unspecified error with token
  208.  0301h    cover sheet token was invalid
  209.  0302h    logo token was invalid
  210.  0303h    signature token was invalid
  211.  0304h    font token was invalid
  212.  0305h    phone directory token was invalid
  213.  0306h    outbound route token was invalid
  214.  0307h    priority token was invalid
  215.  0308h    sort token was invalid
  216.  0309h    billing token was invalid
  217.  0400h    unspecified handle error
  218.  0401h    bad Phone Directory handle
  219.  0402h    bad scheduling handle
  220.  0403h    bad read send log handle
  221.  0404h    bad read receive log handle
  222.  0405h    bad graphics handle
  223.  0500h    data passed in structure was invalid
  224.  0501h    name field given is invalid
  225.  0502h    phone number given is invalid
  226.  0503h    poll code submitted is invalid
  227.  0504h    file type constant was invalid
  228.  0505h    BFT constant not defined or supported
  229.  0506h    resolution not defined or supported
  230.  0507h    page length not defined or supported
  231.  0508h    page width not defined or supported
  232.  0509h    date & time requested are ridiculous
  233.  050Ah    Subject text was not an ASCIZ string
  234.  050Bh    From text was not an ASCIZ string
  235.  050Ch    requested envelope ID was not found
  236.  050Dh    requested envelope ID is not valid
  237.  050Eh    envelope requested was not found
  238.  050Fh    destination index is out of range
  239.  0510h    file index is out of range
  240.  0511h    index into receive log is out of range
  241.  0512h    file name specified was incomplete or invalid
  242.  0513h    page selected was out of range
  243.  0514h    bit width more than byte width
  244.  0515h    mode for open is not defined
  245.  0516h    person index is out of range
  246.  0517h    person ID is out of range
  247.  0518h    group index out of range or invalid
  248.  0519h    group ID out of range or invalid
  249.  051Ah    range of indices to read is invalid
  250.  051Bh    group name given is invalid
  251.  051Ch    field_to_use is badly specified
  252.  051Dh    predicate invalid for field specified
  253.  0600h    unspecified client procedure error
  254.  0601h    device of interest is not present
  255.  0602h    device of interest has been removed
  256.  0603h    device of interest is not responding
  257.  0604h    device of interest is disabled
  258.  0605h    could not dial because device was in use
  259.  0606h    maximum destination limit exceeded
  260.  0607h    maximum file limit exceeded
  261.  0608h    scheduling closed with no destination
  262.  0609h    scheduling closed with no files or poll
  263.  060Ah    scheduling closed with no parameters specified
  264.  060Bh    file type specified does not match file
  265.  060Ch    file type specified is not supported
  266.  060Dh    file submitted is not exportable
  267.  060Eh    file type specified is not imageable
  268.  060Fh    error converting file
  269.  0610h    envelope could not be cancelled
  270.  0611h    Phone Directory is full
  271.  0612h    record is already in the Phone Directory
  272.  0613h    selected group in Phone Directory is full
  273.  0614h    person is already in the group
  274.  0615h    person is not in the group & cannot be removed
  275.  0616h    a graphics file to be created already exists
  276.  0617h    a graphics file to be read is empty
  277.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  278.  0619h    graph read or write attempted without goto or create
  279.  061Ah    graph page contains no data
  280.  061Bh    Phone Directory is already open for this client
  281.  061Ch    schedule log is already open for this client
  282.  061Dh    receive log is aready open for this client
  283.  061Eh    Phone Directory function requires write mode
  284.  0800h    denied exclusive use of the API
  285.  
  286. Format of SYS_LOGIN command buffer:
  287. Offset    Size    Description
  288.  00h    WORD    structure size
  289.  02h    WORD    function number
  290.  04h    WORD    return code
  291.  06h    WORD    client ID
  292.  08h    WORD    API Major Version
  293.  0Ah    WORD    API Minor Version
  294.  0Ch    DWORD    reserved for manufacturer's use
  295.  10h 22 BYTEs    manufacturer's ID
  296.  26h    WORD    highest possible device number
  297.  28h    WORD    maximum destinations per envelope
  298.  2Ah    WORD    maximum files per envelope
  299.  2Ch    WORD    FaxBIOS capabilities (see below)
  300.  2Eh    DWORD    T.30 capabilities (see below)
  301.  32h    WORD    IPC handle
  302.  34h    DWORD    amount of memory needed to load
  303.  38h    WORD    scope (00h for public, nonzero for private)
  304.  3Ah  6 BYTEs    future expansion
  305.  40h    WORD    structure size
  306.  
  307. Bitfields for FaxBIOS capabilities:
  308. Bit(s)    Description
  309.  0    transmit supported
  310.  1    receive supported
  311.  2    IOCTL supported
  312.  3    IOCTL_DIAL supported
  313.  4    IOCTL_ANSWER_FAX supported
  314.  5    manual transmit supported
  315.  6    optional phone services supported
  316.  7    canonical phone objects
  317.  8    seam with next supported
  318.  
  319. Bitfields for T.30 capabilities:
  320. Bit(s)    Description
  321.  0    low vertical resolution (minimum)
  322.  1    high vertical resolution
  323.  2    page width 107mm (4.21 in)
  324.  3    page width 151mm (5.91 in)
  325.  4    page width 215mm (8.46 in) (minimum)
  326.  5    page width 255mm (10.04 in)
  327.  6    page width 303mm (11.93 in)
  328.  7    unused
  329.  8    page length 297mm (11.69 in) (minimum)
  330.  9    page length 364mm (14.33 in)
  331.  10    page length 279mm (11 in)
  332.  11    page length unlimited
  333.  12    Group 4 resolution 300x300
  334.  13    Group 4 resolution 400x400
  335.  14    able to respond to poll from remote
  336.  15    able to poll remote
  337.  16    binary file transfer supported
  338.  
  339. Format of SYS_LOGOUT command buffer:
  340. Offset    Size    Description
  341.  00h    WORD    structure size
  342.  02h    WORD    function number
  343.  04h    WORD    return code
  344.  06h    WORD    client ID
  345.  08h    DWORD    client tag (for client's internal use)
  346.  0Ch  6 BYTEs    future expansion
  347.  12h    WORD    structure size
  348.  
  349. Format of SYS_GET_FAXAPP_INFO command buffer:
  350. Offset    Size    Description
  351.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  352.  0Ch 80 BYTEs    FaxBIOS data
  353.  5Ch 80 BYTEs    default cover
  354.  ACh 80 BYTEs    default logo
  355.  FCh 80 BYTEs    default signature
  356. 14Ch 80 BYTEs    default font 10
  357. 19Ch 80 BYTEs    default font 165
  358. 1ECh 80 BYTEs    default user font
  359. 23Ch 80 BYTEs    default Pdir
  360. 28Ch 80 BYTEs    default sort
  361. 2DCh 10 BYTEs    default bill
  362. 2E6h 10 BYTEs    default route
  363. 2F0h 40 BYTEs    default cover sheet form
  364. 318h 34 BYTEs    valid dial characters
  365. 33Ah  6 BYTEs    local country code
  366. 340h  6 BYTEs    local city or area code
  367. 346h  6 BYTEs    future expansion
  368. 34Ch    WORD    structure size
  369.  
  370. Format of STAT_IO_GET command buffer:
  371. Offset    Size    Description
  372.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  373.  0Ch    WORD    device number
  374.  0Eh    WORD    current activity
  375.  10h    WORD    number of rings (if ringing)
  376.  12h    WORD    number of fascimiles transmitted
  377.  14h    WORD    number of fascimiles received
  378.  16h    WORD    status of last transmission
  379.  18h    WORD    envelope number of last transmission
  380.  1Ah    WORD    index of last destination in envelope
  381.  1Ch    WORD    status of last reception
  382.  1Eh    WORD    current page (if session in progress)
  383.  20h 80 BYTEs    current file
  384.  70h104 BYTEs    remote number
  385.  D8h 20 BYTEs    last name
  386.  ECh 20 BYTEs    first name
  387. 100h 32 BYTEs    company name
  388. 120h 32 BYTEs    notes
  389. 140h    WORD    current envelope ID (if sending)
  390. 142h    WORD    total pages in transmission (if sending)
  391. 144h  6 BYTEs    future expansion
  392. 14h    WORD    structure size
  393.  
  394. Format of STAT_FAXBIOS_GET command buffer:
  395. Offset    Size    Description
  396.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  397.  0Ch    WORD    status ID
  398.  0Eh    WORD    currenty FaxBIOS function number
  399.  10h    WORD    current Client ID being serviced
  400.  12h    WORD    number of things to do
  401.  14h    WORD    number of them done
  402.  16h    WORD    number of pages to do (if any)
  403.  18h    WORD    number of them done
  404.  1Ah    WORD    number of files to do
  405.  1Ch    WORD    number of them done
  406.  1Eh 80 BYTEs    current File
  407.  6Eh    WORD    0 if all devices are idle
  408.  70h    WORD    number of fascimiles transmitted
  409.  72h    WORD    number of fascimiles received
  410.  74h    WORD    status of last transmission in system
  411.  76h    WORD    envelope ID of last transmission
  412.  78h    WORD    index of last destination in envelope
  413.  7Ah    WORD    status of last reception in system
  414.  7Ch    DWORD    time of next transmission
  415.  80h  6 BYTEs    future expansion
  416.  86h    WORD    structure size
  417.  
  418. Format of PDIR_OPEN command buffer:
  419. Offset    Size    Description
  420.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  421.  0Ch 80 BYTEs    Phone Directory token
  422.  5Ch 80 BYTEs    sort order token
  423.  ACh    WORD    open Mode (0 = read, 1 = write)
  424.  AEh    WORD    Phone Directory handle
  425.  B0h    WORD    number of people
  426.  B2h    WORD    number of groups
  427.  B4h    WORD    bitmap of fields supported by partial read
  428.  B6h  6 BYTEs    future expansion
  429.  BCh    WORD    structure size
  430.  
  431. Format of PDIR_CLOSE command buffer:
  432. Offset    Size    Description
  433.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  434.  0Ch    WORD    Phone Directory handle
  435.  0Eh  6 BYTEs    future expansion
  436.  14h    WORD    structure size
  437.  
  438. Format of PDIR_READ_PERSON command buffer:
  439. Offset    Size    Description
  440.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  441.  0Ch    WORD    Phone Directory handle
  442.  0Eh    WORD    retrieve by index
  443.  10h    WORD    person ID or index
  444.  12h    WORD    how many groups person is in
  445.  14h    WORD    person ID
  446.  16h 20 BYTEs    last name
  447.  2Ah 20 BYTEs    first name
  448.  3Eh 32 BYTEs    company
  449.  5Eh 32 BYTEs    notes
  450.  7Eh  6 BYTEs    FAX country code
  451.  84h  6 BYTEs    FAX city/area code
  452.  8Ah 14 BYTEs    FAX local number
  453.  98h 14 BYTEs    FAX extension
  454.  A6h 24 BYTEs    reserved
  455.  BEh  6 BYTEs    voice country code
  456.  C4h  6 BYTEs    voice city/area code
  457.  CAh 14 BYTEs    voice local number
  458.  D8h 14 BYTEs    voice extension
  459.  E6h 24 BYTEs    reserved
  460.  FEh 10 BYTEs    outbound routing information
  461. 108h 10 BYTEs    billing information, credit card etc
  462. 112h    DWORD    remote FAX capabilities
  463. 116h 21 BYTEs    T.30 poll code of FAX number
  464. 12Bh 15 BYTEs    reserved
  465. 13Ah  6 BYTEs    future expansion
  466. 140h    WORD    structure size
  467.  
  468. Format of SCHED_OPEN, SCHED_CANCEL command buffer:
  469. Offset    Size    Description
  470.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  471.  0Ch    WORD    scheduler handle
  472.  0Eh  6 BYTEs    future expansion
  473.  14h    WORD    structure size
  474.  
  475. Format of SCHED_ADD_DEST command buffer:
  476. Offset    Size    Description
  477.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  478.  0Ch    WORD    schedule handle
  479.  0Eh    WORD    device number if manual send wanted
  480.  10h    WORD    non-zero if poll desired
  481.  12h    WORD    person ID
  482.  14h 20 BYTEs    last name
  483.  28h 20 BYTEs    first name
  484.  3Ch 32 BYTEs    company
  485.  5Ch 32 BYTEs    notes
  486.  7Ch  6 BYTEs    FAX country code
  487.  82h  6 BYTEs    FAX city/area code
  488.  88h 14 BYTEs    FAX local number
  489.  96h 14 BYTEs    FAX extension
  490.  A4h 24 BYTEs    reserved
  491.  BCh  6 BYTEs    voice country code
  492.  C2h  6 BYTEs    voice city/area code
  493.  C8h 14 BYTEs    voice local number
  494.  D6h 14 BYTEs    voice extension
  495.  E4h 24 BYTEs    reserved
  496.  FCh 10 BYTEs    outbound routing information
  497. 106h 10 BYTEs    billing information, credit card etc
  498. 110h    DWORD    remote FAX capabilities
  499. 114h 21 BYTEs    T.30 poll code of FAX number
  500. 129h 15 BYTEs    reserved
  501. 138h  6 BYTEs    future expansion
  502. 13Eh    WORD    structure size
  503.  
  504. Format of SCHED_ADD_FILE command buffer:
  505. Offset    Size    Description
  506.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  507.  0Ch    WORD    schedule handle
  508.  0Eh    WORD    file type
  509.         0000h unidentified
  510.         0001h native file format
  511.         0002h ASCII
  512.         0003h FaxBIOS Tiff Class F
  513.  10h 80 BYTEs    file name
  514.  60h 80 BYTEs    font token
  515.  B0h    WORD    conversion options bitmap
  516.  B2h    WORD    resolution
  517.         0000h standard 98 lines per inch, 204 dpi
  518.         0001h fine 196 lines per inch, 204 dpi
  519.         0002h Group4 300 dpi
  520.         0003h Group4 400 dpi
  521.  B4h    WORD    page length
  522.         0000h 279 mm (11 in)
  523.         0001h 297 mm (11.69 in)
  524.         0002h 364 mm (14.33 in)
  525.         0003h unlimited
  526.  B6h    WORD    page width
  527.         0000h 215 mm (8.46 in)
  528.         0001h 255 mm (10.04 in)
  529.         0002h 303 mm (11.93 in)
  530.         0003h 151 mm (5.91 in)
  531.         0004h 107 mm (4.21 in)
  532.  B8h    WORD    binary file transfer specification
  533.         0000h only as FAX
  534.         0001h only as file (for non-faxable files)
  535.         0002h as file when possible else FAX
  536.  BAh    WORD    seam flag (nonzero for seam with next)
  537.  BCh    WORD    delete flag (nonzero to delete when done)
  538.  BEh  6 BYTEs    future expansion
  539.  C4h    WORD    structure size
  540.  
  541. Format of SCHED_SET_PARAMS command buffer:
  542. Offset    Size    Description
  543.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  544.  0Ch    WORD    scheduler handle
  545.  0Eh    DWORD    time to send
  546.  10h 10 BYTEs    priority token
  547.  1Ch 80 BYTEs    logo file token
  548.  6Ch 80 BYTEs    signature file token
  549.  BCh 80 BYTEs    cover page token
  550. 10Ch 40 BYTEs    Subject text
  551. 134h 40 BYTEs    From text
  552. 15Ch    WORD    user ID
  553. 15Eh  6 BYTEs    future expansion
  554. 164h    WORD    structure size
  555.  
  556. Format of SCHED_CLOSE command buffer:
  557. Offset    Size    Description
  558.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  559.  0Ch    WORD    scheduler handle
  560.  0Eh    WORD    envelope ID generated
  561.  10h  6 BYTEs    future expansion
  562.  16h    WORD    structure size
  563.  
  564. Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  565. Offset    Size    Description
  566.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  567.  0Ch    WORD    log handle
  568.  0Eh    WORD    number of entries
  569.  10h  6 BYTEs    future expansion
  570.  16h    WORD    structure size
  571.  
  572. Format of GRAPH_GET_FILE_TYPE command buffer:
  573. Offset    Size    Description
  574.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  575.  0Ch 80 BYTEs    filename
  576.  5Ch    WORD    file type
  577.         0000h unidentified
  578.         0001h native file format
  579.         0002h ASCII
  580.         0003h FaxBIOS Tiff Class F
  581.  5Eh    WORD    bitmap of supported capabilities
  582.  60h  6 BYTEs    future expansion
  583.  66h    WORD    structure size
  584.  
  585. Format of GRAPH_CREATE_FILE command buffer:
  586. Offset    Size    Description
  587.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  588.  0Ch 80 BYTEs    filename
  589.  5Ch    WORD    graph handle
  590.  5Eh  6 BYTEs    future expansion
  591.  64h    WORD    structure size
  592.  
  593. Format of GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  594. Offset    Size    Description
  595.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  596.  0Ch    WORD    graph handle
  597.  0Eh  6 BYTEs    future expansion
  598.  14h    WORD    structure size
  599.  
  600. Format of GRAPH_CREATE_PAGE command buffer:
  601. Offset    Size    Description
  602.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  603.  0Ch    WORD    graph handle
  604.  0Eh    WORD    resolution
  605.  10h    WORD    page width
  606.  12h  6 BYTEs    future expansion
  607.  18h    WORD    structure size
  608.  
  609. Format of GRAPH_WRITE_PAGE command buffer:
  610. Offset    Size    Description
  611.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  612.  0Ch    WORD    graph handle
  613.  0Eh    DWORD    pointer to storage for image
  614.  12h    WORD    band height in lines
  615.  14h    WORD    width of page image in bytes
  616.  16h    WORD    facsimile page width constant
  617.  18h    WORD    width of page image in bits
  618.  1Ah    WORD    number of bytes actually processed
  619.  1Ch  6 BYTEs    future expansion
  620.  22h    WORD    structure size
  621.  
  622. Format of GRAPH_OPEN_FILE command buffer:
  623. Offset    Size    Description
  624.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  625.  0Ch 80 BYTEs    filename
  626.  5Ch    WORD    file type
  627.  5Eh    WORD    graph handle
  628.  60h    WORD    number of pages
  629.  62h  6 BYTEs    future expansion
  630.  68h    WORD    structure size
  631.  
  632. Format of GRAPH_GOTO_PAGE command buffer:
  633. Offset    Size    Description
  634.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  635.  0Ch    WORD    graph handle
  636.  0Eh    WORD    page number
  637.  10h    WORD    vertical resolution
  638.  12h    WORD    page width
  639.  14h    DWORD    page length
  640.  18h  6 BYTEs    future expansion
  641.  1Eh    WORD    structure size
  642.  
  643. Format of GRAPH_READ_PAGE command buffer:
  644. Offset    Size    Description
  645.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  646.  0Ch    WORD    graph handle
  647.  0Eh    DWORD    pointer to storage for image
  648.  12h    WORD    band height in lines
  649.  14h    WORD    width of page image in bytes
  650.  16h    WORD    facsimile page width constant
  651.  18h    WORD    width of page image in bits
  652.  1Ah    WORD    number of bytes actually processed
  653.  1Ch  6 BYTEs    future expansion
  654.  22h    WORD    structure size
  655.  
  656. Format of IOCTL_ANSWER_FAX command buffer:
  657. Offset    Size    Description
  658.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  659.  0Ch    WORD    device number
  660.  0Eh  6 BYTEs    future expansion
  661.  14h    WORD    structure size
  662.  
  663. Format of IOCTL_DIAL command buffer:
  664. Offset    Size    Description
  665.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  666.  0Ch    WORD    device number
  667.  0Eh  6 BYTEs    country code
  668.  14h  6 BYTEs    city or area code
  669.  1Ah 14 BYTEs    local number
  670.  28h 14 BYTEs    extension
  671.  36h 14 BYTEs    reserved
  672.  4Eh  6 BYTEs    future expansion
  673.  54h    WORD    structure size
  674. --------N-2F8100-----------------------------
  675. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  676.     AX = 8100h
  677. Return: AL = FFh if installed
  678. Program: TurboNET is a NetBIOS-based file redirector and server; a
  679.       demonstration version may be downloaded from Nanosoft's BBS
  680. SeeAlso: AX=8000h"TurboNET"
  681. --------N-2F8101-----------------------------
  682. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  683.     AX = 8101h
  684. Return: AL = ???
  685.     DL = ???
  686. --------N-2F8102-----------------------------
  687. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  688.     AX = 8102h
  689. Return: AL = ???
  690.     DL = ???
  691. --------N-2F8103-----------------------------
  692. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  693.     AX = 8103h
  694.     ES:DI -> 17-byte buffer
  695. Return: buffer filled
  696. --------N-2F8104-----------------------------
  697. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  698.     AX = 8104h
  699.     BL = ???
  700.     BH = ???
  701.     CX = ???
  702.     DX = ???
  703.     DS:SI -> 16-byte buffer containing ???
  704. Return: AL = 00h ???
  705. --------N-2F8105-----------------------------
  706. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  707.     AX = 8105h
  708.     CX = ??? (don't change current value if 0000h)
  709.     DX = ??? (don't change current value if 0000h)
  710. Return: AL = 00h successful
  711. --------s-2F8200-----------------------------
  712. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  713.     AX = 8200h
  714.     DX:DI -> start of sample space
  715.     CX:BX = length in bytes
  716. Return: AX = status
  717.         1000h successful
  718.         2000h not initialized (see AX=8210h)
  719.         other RESPLAY not installed
  720. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  721. SeeAlso: AX=8201h,AX=8210h
  722. --------G-2F8200-----------------------------
  723. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  724.     AX = 8200h
  725. Return: AL = FFh if installed
  726. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  727.       captured and recorded for later analysis
  728. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  729. SeeAlso: AX=8204h"CAPDOS"
  730. --------s-2F8201-----------------------------
  731. INT 2F - RESPLAY - INSTALLATION CHECK
  732.     AX = 8201h
  733. Return: AX = 7746h if installed
  734. SeeAlso: AX=8202h
  735. --------G-2F8201-----------------------------
  736. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  737.     AX = 8201h
  738. Note:    resets queue of captured INT 21 calls
  739. SeeAlso: AX=8200h"CAPDOS"
  740. --------s-2F8202-----------------------------
  741. INT 2F - RESPLAY - UNINSTALL
  742.     AX = 8202h
  743. Return: AX = status
  744.         1000h successful
  745. SeeAlso: AX=8201h
  746. --------G-2F8202-----------------------------
  747. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  748.     AX = 8202h
  749. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  750. --------G-2F8203-----------------------------
  751. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  752.     AX = 8203h
  753. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  754. --------G-2F8204-----------------------------
  755. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  756.     AX = 8204h
  757. Return: AH = flag: queue wrapped if nonzero
  758.     BX = index of current start of queue
  759.     CX = size of queue in entries
  760. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  761. --------G-2F8205-----------------------------
  762. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  763.     AX = 8205h
  764.     BX = queue item number
  765. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  766. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  767. --------s-2F8210-----------------------------
  768. INT 2F - RESPLAY - INITIALIZE
  769.     AX = 8210h
  770.     BL = sound device
  771.         00h printer port LPT1
  772.         01h printer port LPT2
  773.         02h prototype board at I/O address 0300h
  774.         03h printer port (alternative LPT1)
  775.         04h internal speaker
  776.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  777.     CL = direction
  778.         00h playback
  779.         01h sample
  780. Return: AX = status
  781.         1000h successful
  782.         2000h parameter out of range
  783.         other RESPLAY not installed
  784. SeeAlso: AX=8200h
  785. ----------2F86-------------------------------
  786. INT 2F U - ???
  787.     AH = 86h
  788.     AL = function (at least 06h and 07h)
  789.     ???
  790. Return: ???
  791. Note:    called by Codeview for Windows
  792. SeeAlso: AH=44h
  793. --------U-2F8900-----------------------------
  794. INT 2F - WHOA!.COM - INSTALLATION CHECK
  795.     AX = 8900h
  796. Return: AL = 00h not installed
  797.        = FFh installed
  798. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  799. SeeAlso: AX=8901h,AX=8902h
  800. --------U-2F8901-----------------------------
  801. INT 2F - WHOA!.COM - UNINSTALL
  802.     AX = 8901h
  803. Return: AL = FDh successful
  804.        = FEh error
  805. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  806. SeeAlso: AX=8900h
  807. --------U-2F8902-----------------------------
  808. INT 2F - WHOA!.COM - SET DELAY COUNT
  809.     AX = 8902h
  810.     BX = delay count (larger values slow system down more)
  811. Return: AL = FDh successful
  812.        = FEh error
  813. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  814. SeeAlso: AX=8900h
  815. --------U-2F9000-----------------------------
  816. INT 2F U - RAID - INSTALLATION CHECK
  817.     AX = 9000h
  818. Return: AL = FFh if installed
  819. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  820.       that resides mostly in EMS
  821. --------U-2F9001-----------------------------
  822. INT 2F U - RAID - GET ???
  823.     AX = 9001h
  824. Return: DX:AX -> ???
  825. SeeAlso: AX=9000h
  826. --------U-2F9002-----------------------------
  827. INT 2F U - RAID - GET RESIDENT SEGMENT
  828.     AX = 9002h
  829. Return: AX = segment of resident (conventional memory) portion
  830. SeeAlso: AX=9000h
  831. --------U-2F9003-----------------------------
  832. INT 2F U - RAID - UNINSTALL
  833.     AX = 9003h
  834. Return: ???
  835. SeeAlso: AX=9000h
  836. --------U-2F9004-----------------------------
  837. INT 2F U - RAID - GET ???
  838.     AX = 9004h
  839. Return: AX = first available paragraph past end of resident portion???
  840.     CX destroyed
  841. SeeAlso: AX=9000h
  842. --------e-2F92-------------------------------
  843. INT 2F - Network Courier E-Mail - API
  844.     AH = 92h
  845.     AL = function
  846.         00h installation check
  847.         01h uninstall
  848.         02h pop down MICRO.EXE notification window
  849.         03h ???
  850.         04h ???
  851.         05h ???
  852. Return: ???
  853. Program: The Network Courier is an electronic mail package by Consumers
  854.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  855.       renamed Microsoft Mail v3.0.
  856. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  857. Index:    installation check;Network Courier E-Mail
  858. Index:    uninstall;Network Courier E-Mail
  859. --------R-2F9200-----------------------------
  860. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  861.     AX = 9200h
  862. Program: DRIVEMAP is a redirector which allows drives on computers connected
  863.       over the parallel or serial ports to appear as local drives
  864. BUG:    jumps to data because jump table entry is 0000h
  865. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  866. --------R-2F9201-----------------------------
  867. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  868.     AX = 9201h
  869.     DL = drive number (01h = A:, etc.)
  870. Return: AL = 92h if mapped drive
  871.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  872. SeeAlso: AX=9204h,AX=920Bh
  873. --------R-2F9202-----------------------------
  874. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  875.     AX = 9202h
  876.     BX = caller's CS
  877. Return: AX = status
  878.         0000h failed
  879.         nonzero successful
  880. SeeAlso: AX=9204h
  881. --------R-2F9203-----------------------------
  882. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  883.     AX = 9203h
  884. Return: AH = major version
  885.     AL = minor version
  886.     CX = segment of resident code
  887. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  888. SeeAlso: AX=9204h,INT 16/AX=FF70h
  889. --------R-2F9204-----------------------------
  890. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  891.     AX = 9204h
  892. Return: AX = 9200h if installed
  893.        BL = ???
  894.        CX = segment of resident code
  895. Program: DRIVEMAP is a redirector which allows drives on computers connected
  896.       over the parallel or serial ports to appear as local drives
  897. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  898. --------R-2F9205-----------------------------
  899. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  900.     AX = 9205h
  901.     BX = ??? to set
  902. Return: CX = new value of ???
  903. --------R-2F9206-----------------------------
  904. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  905.     AX = 9206h
  906.     ???
  907. Return: ???
  908. --------R-2F9207-----------------------------
  909. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  910.     AX = 9207h
  911.     ???
  912. Return: AX = ???
  913. --------R-2F9208-----------------------------
  914. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  915.     AX = 9208h
  916.     ???
  917. Return: ???
  918. --------R-2F9209-----------------------------
  919. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  920.     AX = 9209h
  921.     ???
  922. Return: AX = ???
  923.     BX = ???
  924.     CX = ???
  925.     DX = ???
  926. --------R-2F920A-----------------------------
  927. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  928.     AX = 920Ah
  929.     BX = ???
  930. Return: AX = ??? or FFFBh on error
  931. --------R-2F920B-----------------------------
  932. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  933.     AX = 920Bh
  934.     BL = drive letter (41h ['A'] = A:, etc)
  935.     CX = ??? (0000h removes mapping)
  936. Return: AX = ??? or FFF8h on error
  937. SeeAlso: AX=9201h,AX=920Dh
  938. --------R-2F920C-----------------------------
  939. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  940.     AX = 920Ch
  941.     ???
  942. Return: AX = ??? (0002h)
  943.     CX = ??? (0000h)
  944. --------R-2F920D-----------------------------
  945. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  946.     AX = 920Dh
  947.     BL = drive letter (41h ['A'] = A:, etc)
  948. Return: AX = type flags
  949.         bit 0: ???
  950.         bit 1: available
  951.         bit 5: local
  952.     BX = ???
  953.     CX = segment of resident code (apparently an unintended side effect)
  954. Program: DRIVEMAP is a redirector which allows drives on computers connected
  955.       over the parallel or serial ports to appear as local drives
  956. SeeAlso: AX=9218h,INT 16/AX=FF70h
  957. --------R-2F920E-----------------------------
  958. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  959.     AX = 920Eh
  960.     BX = port number (0-2)
  961.     CX = ??? (0000h to unmap)
  962. Return: ???
  963. --------R-2F920F-----------------------------
  964. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  965.     AX = 920Fh
  966.     ES:DI -> 3-byte buffer for ???
  967. Return: CX = 0000h
  968.     ES:DI buffer filled
  969. --------R-2F9210-----------------------------
  970. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  971.     AX = 9210h
  972.     ???
  973. Return: ???
  974. --------R-2F9211-----------------------------
  975. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  976.     AX = 9211h
  977.     ES:DI -> 8-word buffer for ???
  978. Return: CX = 0000h
  979.     ES:DI buffer filled
  980. --------R-2F9212-----------------------------
  981. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  982.     AX = 9212h
  983.     BX = phase
  984.         0000h leave critical section???
  985.         nonzero enter critical section???
  986. --------R-2F9213-----------------------------
  987. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  988.     AX = 9213h
  989.     BX = function number (0000h-000Bh)
  990.     ???
  991. Return: ???
  992. --------R-2F9214-----------------------------
  993. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  994.     AX = 9214h
  995.     ES:DI -> 6-word buffer for ???
  996. Return: CX = 0000h
  997.     AX = ???
  998.     ES:DI buffer filled
  999. --------R-2F9215-----------------------------
  1000. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1001.     AX = 9215h
  1002.     ES:DI -> 100-word buffer for ???
  1003. Return: CX = 0000h
  1004.     ES:DI buffer filled
  1005. --------R-2F9216-----------------------------
  1006. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1007.     AX = 9216h
  1008.     ES:DI -> ???
  1009. Return: ???
  1010. --------R-2F9217-----------------------------
  1011. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1012.     AX = 9217h
  1013.     DS:SI -> 25-word buffer containing ???
  1014. Return: ???
  1015. --------R-2F9218-----------------------------
  1016. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  1017.     AX = 9218h
  1018.     BX = port number???
  1019. Return: AX = ???
  1020.     BX = ??? (0000h)
  1021.     CX = ??? (0000h)
  1022. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1023.       over the parallel or serial ports to appear as local drives
  1024. --------R-2F9219-----------------------------
  1025. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1026.     AX = 9219h
  1027.     ???
  1028. Return: ???
  1029. --------R-2F921A-----------------------------
  1030. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1031.     AX = 921Ah
  1032.     ???
  1033. Return: AH = ???
  1034.     AL = ???
  1035.     BX = ???
  1036. --------R-2F921B-----------------------------
  1037. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1038.     AX = 921Bh
  1039.     ???
  1040. Return: AX = ???
  1041.     CX = segment of resident code (apparently an unintended side effect)
  1042. --------R-2F921C-----------------------------
  1043. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1044.     AX = 921Ch
  1045.     ???
  1046. Return: ???
  1047. --------R-2F921D-----------------------------
  1048. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  1049.     AX = 921Dh
  1050. Return: AX = ???
  1051. --------R-2F921E-----------------------------
  1052. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  1053.     AX = 921Eh
  1054.     ???
  1055. Return: ???
  1056. Program: DRIVEMAP is a redirector which allows drives on computers connected
  1057.       over the parallel or serial ports to appear as local drives
  1058. Note:    this function sets two variables to 24h each
  1059. SeeAlso: INT 16/AX=FF70h
  1060. --------V-2F93-------------------------------
  1061. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  1062.     AH = 93h
  1063.     BX = CX = AX
  1064. Return: AL = FFh if installed and BX=CX=AX on entry
  1065.         BX = segment of resident code
  1066.        = 01h if installed but BX or CX differ from AX
  1067. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  1068. SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
  1069. Index:    screen saver;InnerMission
  1070. --------e-2F9400-----------------------------
  1071. INT 2F - MICRO.EXE - INSTALLATION CHECK
  1072.     AX = 9400h
  1073. Return: AL = 07h or 08h if installed
  1074. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  1075. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  1076. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  1077. --------e-2F9401-----------------------------
  1078. INT 2F - MICRO.EXE - SET ??? FLAG
  1079.     AX = 9401h
  1080. SeeAlso: AX=9400h,AX=9403h
  1081. --------e-2F9402-----------------------------
  1082. INT 2F - MICRO.EXE - ???
  1083.     AX = 9402h
  1084.     ???
  1085. Return: ???
  1086. SeeAlso: AX=9400h
  1087. --------e-2F9403-----------------------------
  1088. INT 2F - MICRO.EXE - SET ??? FLAG
  1089.     AX = 9403h
  1090. SeeAlso: AX=9400h,AX=9404h
  1091. --------e-2F9404-----------------------------
  1092. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  1093.     AX = 9404h
  1094.     ES:DI -> name of executable from which MICRO.EXE was started
  1095. Note:    if the specified name is identical to the name of the program file
  1096.       from which MICRO was started, the ??? flag is cleared; otherwise,
  1097.       it is left unchanged
  1098. SeeAlso: AX=9400h,AX=9403h
  1099. --------e-2F9C-------------------------------
  1100. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  1101.     AH = 9Ch
  1102.     AL = subfunction
  1103.         01h uninstall
  1104. Return: ???
  1105. Program: The Network Courier is an electronic mail package by Consumers
  1106.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  1107.       renamed Microsoft Mail v3.0.
  1108. SeeAlso: AH=92h
  1109. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  1110. --------G-2F9E00-----------------------------
  1111. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  1112.     AX = 9E00h
  1113. Return: AX = FFFFh if installed
  1114.         BX = segment of resident code
  1115. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  1116.       and higher machines by Celso Minnitti, Jr.
  1117. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  1118. --------G-2F9E01-----------------------------
  1119. INT 2F U - INTMON v2.1 - RESET
  1120.     AX = 9E01h
  1121. Return: ???
  1122. Desc:    this function specifies that INTMON should assume that any interrupts
  1123.       on which it is currently awaiting a return have completed (i.e.
  1124.       interrupts which never return such as INT 20 and INT 27)
  1125. SeeAlso: AX=9E00h,AX=9E03h
  1126. --------G-2F9E02-----------------------------
  1127. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  1128.     AX = 9E02h
  1129. Return: ???
  1130. SeeAlso: AX=9E00h
  1131. --------G-2F9E03-----------------------------
  1132. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  1133.     AX = 9E03h
  1134.     BH = interrupt number???
  1135. Return: ???
  1136. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  1137. SeeAlso: AX=9E00h,AX=9E01h
  1138. --------G-2F9F00-----------------------------
  1139. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  1140.     AX = 9F00h
  1141. Return: AX = FFFFh if installed
  1142. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  1143.       Minnitti, Jr.
  1144. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  1145. --------G-2F9F01-----------------------------
  1146. INT 2F U - INTCFG v2.1 - ???
  1147.     AX = 9F01h
  1148.     ???
  1149. Return: ???
  1150. SeeAlso: AX=9F00h
  1151. --------G-2F9F30-----------------------------
  1152. INT 2F U - INTCFG v2.1 - GET ???
  1153.     AX = 9F30h
  1154. Return: AX = ??? (0002h)
  1155. SeeAlso: AX=9F00h
  1156. --------G-2F9F49-----------------------------
  1157. INT 2F U - INTCFG v2.1 - UNINSTALL
  1158.     AX = 9F49h
  1159. Return: AX,DX,DS,ES destroyed
  1160. SeeAlso: AX=9F00h
  1161. --------E-2FA1--BX0081-----------------------
  1162. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  1163.     AH = A1h
  1164.     BX = 0081h
  1165.     AL = which
  1166.         FEh OS/286,OS/386
  1167.         FFh HummingBoard DOS extender
  1168.     ES:DI -> 16-byte buffer
  1169. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  1170. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  1171.       BX=0082h and BX=0084h are present and function identically to the
  1172.       AX=FBA1h/BX=008xh calls
  1173. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  1174. --------m-2FA189-----------------------------
  1175. INT 2F U - Biologic HRAMDEV.SYS - API
  1176.     AX = A189h
  1177.     BX = subfunction
  1178.         0000h set ???
  1179.         0001h remove ???
  1180.         0002h get status ???
  1181.         0003h enable ???
  1182.         0004h disable ???
  1183.         0005h set ??? flag
  1184.         0006h clear ??? flag
  1185.         0007h set ??? flag
  1186.         0008h clear ??? flag
  1187.         0009h set ???
  1188.     ES:DI -> function-specific arguments
  1189.         if func 0000h: 20-byte buffer containing ???
  1190.         if func 0001h: 20-byte buffer for returned ???
  1191.         if func 0002h: 16-byte buffer for returned ???
  1192.         if func 0009h: WORD containing ???
  1193. Return: BX = A189h if installed
  1194.     AH = status
  1195.         00h successful
  1196.         FFh failed or invalid function number
  1197. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  1198.       provides improved high memory access under MS-DOS 5.0
  1199. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  1200.       removes the values stored with the most recent function 00h call
  1201.       which has not yet been matched with a function 01h call.
  1202. --------U-2FA4E0-----------------------------
  1203. INT 2F - Futurus Team - INSTALLATION CHECK
  1204.     AX = A4E0h
  1205. Return: AL = 52h ("R") if installed
  1206.         AH = major version plus 30h ("0")
  1207.         ES:BX -> ??? (INT A4 handler???)
  1208. Note:    older versions of Right Hand Man (from which Team evolved) store the
  1209.       signature "RH" at offset 103h in the INT 2F handler's segment
  1210. SeeAlso: INT A4"Right Hand Man"
  1211. --------U-2FA900-----------------------------
  1212. INT 2F - METZTSR.COM - INSTALLATION CHECK
  1213.     AX = A900h
  1214.     CF set
  1215. Return: CF clear if resident
  1216.         AX = 97FFh
  1217.     CF set if not present
  1218. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  1219.       saver) inactivity timeout while running a DOSapp under MS Windows.
  1220.     the default multiplex number is A9h, but may be set to any value from
  1221.       80h to FFh with a commandline switch
  1222. SeeAlso: AX=A901h,AX=A902h
  1223. --------U-2FA901-----------------------------
  1224. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  1225.     AX = A901h
  1226.     CF set
  1227. Return: CF clear if successful
  1228.         AX:DX = BIOS time at which INT 09 was last invoked
  1229.     CF set if not present
  1230. SeeAlso: INT 09,INT 1A/AH=00h
  1231. --------U-2FA902-----------------------------
  1232. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  1233.     AX = A902h
  1234.     BL = new value
  1235.         00h Ctrl-Alt-Del not allowed
  1236.         else Ctrl-Alt-Del allowed (startup default is 01h)
  1237.     CF set
  1238. Return: CF clear if successful
  1239.         AX = 97FFh
  1240.     CF set if not resident
  1241. SeeAlso: AX=A903h
  1242. --------U-2FA903-----------------------------
  1243. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  1244.     AX = A903h
  1245.     CF set
  1246. Return: CF clear if successful
  1247.         AX = 97FFh if Ctrl-Alt-Del allowed
  1248.         AX = 0000h if Ctrl-Alt-Del not allowed
  1249.     CF set if not resident
  1250. SeeAlso: AX=A902h
  1251. --------U-2FAA00-----------------------------
  1252. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  1253.     AX = AA00h
  1254. Return: AL = 00h not installed
  1255.          FFh installed
  1256. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  1257. --------f-2FAB00-----------------------------
  1258. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  1259.     AX = AB00h
  1260. Return: AL = 4Dh if installed
  1261. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  1262. --------f-2FAB01-----------------------------
  1263. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  1264.     AX = AB01h
  1265.     BX = process ID
  1266.     DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
  1267. Return: AL = 00h OK
  1268.        = other retry after calling INT 7F/AX=0200h
  1269. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  1270. --------f-2FAB02-----------------------------
  1271. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  1272.     AX = AB02h
  1273. Return: AL = 00h successful
  1274.         BX = process ID
  1275.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  1276. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  1277. --------V-2FAC00-----------------------------
  1278. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  1279.     AX = AC00h
  1280. Return: AX = FFFFh
  1281.     ES:DI -> ??? (graphics data?) (not documented)
  1282. Note:    this installation check was moved here to avoid the conflict with the
  1283.       CD-ROM extensions that occurred in DOS 4.00
  1284. SeeAlso: AX=1500h"GRAPHICS"
  1285. --------V-2FAD00-----------------------------
  1286. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  1287.     AX = AD00h
  1288. Return: AL = FFh if installed
  1289.         BX = ??? (0100h for MS-DOS 3.3+)
  1290. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  1291.       subfunctions listed here
  1292. --------O-2FAD00-----------------------------
  1293. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  1294.     AX = AD00h
  1295. Return: AX = FFFFh if installed
  1296. SeeAlso: AX=AD80h
  1297. --------V-2FAD01-----------------------------
  1298. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  1299.     AX = AD01h
  1300.     BX = new code page
  1301. Return: CF clear if successful
  1302.         AX = 0001h
  1303.     CF set on error (unsupported code page)
  1304.         AX = 0000h
  1305. SeeAlso: AX=AD02h
  1306. --------O-2FAD01-----------------------------
  1307. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  1308.     AX = AD01h
  1309. Return: BX = current code page
  1310.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  1311.     ES = resident code segment
  1312. SeeAlso: AX=AD83h
  1313. --------V-2FAD02-----------------------------
  1314. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  1315.     AX = AD02h
  1316. Return: CF set if code page never set
  1317.         AX = 0001h
  1318.         BX = FFFFh (assume first hardware code page)
  1319.     CF clear if successful
  1320.         BX = current code page
  1321. SeeAlso: AX=AD01h,AX=AD03h
  1322. --------V-2FAD03-----------------------------
  1323. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  1324.     AX = AD03h
  1325.     ES:DI -> buffer for code page information (see below)
  1326.     CX = size of buffer in bytes
  1327. Return: CF set if buffer too small
  1328.     CF clear if successful
  1329.         ES:DI buffer filled
  1330. SeeAlso: AX=AD01h,AX=AD02h
  1331.  
  1332. Format of DOS 5.0-6.0 code page information:
  1333. Offset    Size    Description
  1334.  00h    WORD    number of software code pages
  1335.  02h    WORD    ??? (0003h)
  1336.  04h    WORD    number of hardware code pages
  1337.  06h  N WORDs    hardware code page numbers
  1338.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  1339. --------V-2FAD04-----------------------------
  1340. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  1341.     AX = AD04h
  1342.     ???
  1343. Return: ???
  1344. --------V-2FAD10-----------------------------
  1345. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  1346.     AX = AD10h
  1347.     ???
  1348. Return: AX = FFFFh
  1349.     BX = ??? (0100h in PC-DOS 4.01)
  1350. --------V-2FAD10-----------------------------
  1351. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  1352.     AX = AD10h
  1353.     ???
  1354. Return: CF clear if successful
  1355.     CF set on error
  1356. Note:    this function is a NOP if the active code page has never been set
  1357.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  1358. --------V-2FAD40-----------------------------
  1359. INT 2F - DOS 4+ - ???
  1360.     AX = AD40h
  1361.     DX = ???
  1362.     ???
  1363. Return: ???
  1364. Note:    called by PC-DOS 4.01 PRINT.COM
  1365. --------K-2FAD80-----------------------------
  1366. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  1367.     AX = AD80h
  1368. Return: AL = FFh if installed
  1369.         BX = version number (BH = major, BL = minor)
  1370.         ES:DI -> internal data (see below)
  1371. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  1372.     undocumented prior to the release of DOS 5.0
  1373.  
  1374. Format of KEYB internal data:
  1375. Offset    Size    Description
  1376.  00h    DWORD    original INT 09
  1377.  04h    DWORD    original INT 2F
  1378.  08h  6 BYTEs    ???
  1379.  0Eh    WORD    flags
  1380.  10h    BYTE    ???
  1381.  11h    BYTE    ???
  1382.  12h  4 BYTEs    ???
  1383.  16h  2 BYTEs    country ID letters
  1384.  18h    WORD    current code page
  1385. ---DOS 3.3---
  1386.  1Ah    WORD    pointer to first item in list of code page tables???
  1387.  1Ch    WORD    pointer to ??? item in list of code page tables
  1388.  1Eh  2 BYTEs    ???
  1389.  20h    WORD    pointer to key translation data
  1390.  22h    WORD    pointer to last item in code page table list (see below)
  1391.  24h  9 BYTEs    ???
  1392. ---DOS 4.01---
  1393.  1Ah  2 BYTEs    ???
  1394.  1Ch    WORD    pointer to first item in list of code page tables???
  1395.  1Eh    WORD    pointer to ??? item in list of code page tables
  1396.  20h  2 BYTEs    ???
  1397.  22h    WORD    pointer to key translation data
  1398.  24h    WORD    pointer to last item in code page table list (see below)
  1399.  26h  9 BYTEs    ???
  1400.  
  1401. Format of code page table list entries:
  1402. Offset    Size    Description
  1403.  00h    WORD    pointer to next item, FFFFh = last
  1404.  02h    WORD    code page
  1405.  04h  2 BYTEs    ???
  1406.  
  1407. Format of translation data:
  1408. Offset    Size    Description
  1409.  00h    WORD    size of data in bytes, including this word
  1410.  02h N-2 BYTEs    ???
  1411. --------K-2FAD81-----------------------------
  1412. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  1413.     AX = AD81h
  1414.     BX = code page (see INT 21/AX=6601h)
  1415. Return: CF set on error
  1416.         AX = 0001h (code page not available)
  1417.     CF clear if successful
  1418. Notes:    called by DISPLAY.SYS
  1419.     undocumented prior to the release of DOS 5.0
  1420. SeeAlso: AX=AD82h
  1421. --------K-2FAD82-----------------------------
  1422. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  1423.     AX = AD82h
  1424.     BL = new state
  1425.         00h US keyboard (Control-Alt-F1)
  1426.         FFh foreign keyboard (Control-Alt-F2)
  1427. Return: CF set on error (BL not 00h or FFh)
  1428.     CF clear if successful
  1429. Note:    undocumented prior to the release of DOS 5.0
  1430. SeeAlso: AX=AD81h,AX=AD83h
  1431. --------K-2FAD83-----------------------------
  1432. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  1433.     AX = AD83h
  1434. Return: BL = current state
  1435.         00h US keyboard
  1436.         FFh foreign keyboard
  1437. SeeAlso: AX=AD82h
  1438. --------l-2FAE00-----------------------------
  1439. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  1440.     AX = AE00h
  1441.     DX = magic value FFFFh
  1442.     CH = FFh
  1443.     CL = length of command line tail (4DOS v4.0)
  1444.     DS:BX -> command line buffer (see below)
  1445.     DS:SI -> command name buffer (see below)
  1446.     DI = 0000h (4DOS v4.0)
  1447. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  1448.     AL = 00h if the command should be executed as usual
  1449. Notes:    This call provides a mechanism for TSRs to install permanent
  1450.       extensions to the command repertoire of COMMAND.COM.    It appears
  1451.       that COMMAND.COM makes this call before executing the current
  1452.       command line, and does not execute it itself if the return is FFh.
  1453.     APPEND hooks this call, to allow subsequent APPEND commands to
  1454.       execute without re-running APPEND
  1455. SeeAlso: AX=AE01h
  1456.  
  1457. Format of command line buffer:
  1458. Offset    Size    Description
  1459.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  1460.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  1461.       N BYTEs    command line text, terminated by 0Dh
  1462.  
  1463. Format of command name buffer:
  1464. Offset    Size    Description
  1465.  00h    BYTE    length of command name
  1466.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  1467. --------l-2FAE01-----------------------------
  1468. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  1469.     AX = AE01h
  1470.     DX = magic value FFFFh
  1471.     CH = 00h
  1472.     CL = length of command name (4DOS v4.0)
  1473.     DS:SI -> command name buffer (see AX=AE00h)
  1474.     DS:BX -> command line buffer (see AX=AE00h)
  1475. Return: DS:SI buffer updated
  1476.       if length byte is nonzero, the following bytes contain the uppercase
  1477.       internal command to execute and the command line buffer contains the
  1478.       command's parameters (the first DS:[SI] bytes are ignored)
  1479. Notes:    this call requests execution of the command which a previous call to
  1480.       AX=AE00h indicated was resident
  1481.     APPEND hooks this call
  1482. BUG:    Novell DOS 7.0's COMMAND.COM will attempt to run a disk program with
  1483.       the indicated name even if the returned length byte is zero, because
  1484.       the register used to flag this case is clobbered without first
  1485.       checking it.    The workaround is to set the command name buffer to
  1486.       "REM" followed by enough blanks to pad out the original command's
  1487.       length, which will also work with MS-DOS 6.
  1488.       (from padgett@tccslr.dnet.mmc.com)
  1489. SeeAlso: AX=AE00h
  1490. ----------2FAF-------------------------------
  1491. INT 2F U - ???
  1492.     AH = AFh
  1493.     ???
  1494. Return: ???
  1495. --------V-2FB000-----------------------------
  1496. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  1497.     AX = B000h
  1498. Return: AL = status
  1499.         00h not installed, OK to install
  1500.         01h not installed, not OK to install
  1501.         FFh installed
  1502. Notes:    called by DISPLAY.SYS
  1503.     documented for DOS 5.0, but undocumented in prior versions
  1504. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  1505. --------V-2FB001-----------------------------
  1506. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  1507.     AX = B001h
  1508.     DS:BX -> DWORD buffer for address of 8x8 font table
  1509. Return: buffer filled
  1510.     AL = FFh
  1511. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  1512.       MS-DOS 3.30 sets it to 0030h
  1513. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  1514. --------I-2FB400-----------------------------
  1515. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  1516.     AX = B400h
  1517. Return: AL = FFh if installed
  1518. --------I-2FB401-----------------------------
  1519. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  1520.     AX = B401h
  1521. Return: ES -> host screen buffer (PC ASCII format)
  1522.     ES unchanged if communications not started
  1523. --------I-2FB402-----------------------------
  1524. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1525.     AX = B402h
  1526.     BX = ???
  1527. Return: ???
  1528. --------I-2FB403-----------------------------
  1529. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1530.     AX = B403h
  1531.     ???
  1532. Return: ???
  1533. --------I-2FB404-----------------------------
  1534. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1535.     AX = B404h
  1536.     ???
  1537. Return: ???
  1538. --------I-2FB405-----------------------------
  1539. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  1540.     AX = B405h
  1541.     ???
  1542. Return: ???
  1543. ----------2FB700-----------------------------
  1544. INT 2F - APPEND - INSTALLATION CHECK
  1545.     AX = B700h
  1546. Return: AL = status
  1547.         00h not installed
  1548.         FFh installed
  1549. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  1550.       a TopView-compatible environment
  1551. ----------2FB701-----------------------------
  1552. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  1553.     AX = B701h
  1554. Return: ES:DI -> active APPEND path
  1555. Notes:    the only version of APPEND known to support this call is the APPEND
  1556.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  1557.       "Incorrect APPEND Version" and aborts the caller
  1558.     use AX=B704h first, and only call this function if that one is not
  1559.       supported
  1560. SeeAlso: AX=B704h
  1561. ----------2FB702-----------------------------
  1562. INT 2F - APPEND - VERSION CHECK
  1563.     AX = B702h
  1564. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  1565.     AL = major version number
  1566.     AH = minor version number, otherwise
  1567. SeeAlso: AX=B710h
  1568. ----------2FB703-----------------------------
  1569. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  1570.     AX = B703h
  1571.     ES:DI -> INT 21 handler APPEND should chain to
  1572. Return: ES:DI -> APPEND's INT 21 handler
  1573. Note:    each invocation of this function toggles a flag which APPEND uses to
  1574.       determine whether to chain to the user handler or the original
  1575.       INT 21
  1576. ----------2FB704-----------------------------
  1577. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  1578.     AX = B704h
  1579. Return: ES:DI -> active APPEND path (128 bytes max)
  1580. Note:    some versions of append do not support this call, and return ES
  1581.       unchanged; in this case, you should call AX=B701h to get the APPEND
  1582.       path
  1583. SeeAlso: AX=B701h
  1584. ----------2FB706-----------------------------
  1585. INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  1586.     AX = B706h
  1587. Return: BX = APPEND state (see below)
  1588. SeeAlso: AX=B707h
  1589.  
  1590. Bitfields for APPEND state:
  1591. Bit(s)    Description
  1592.  0    set if APPEND enabled
  1593.  1-11    reserved
  1594.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  1595.       been specified
  1596.  13    set if /PATH flag active
  1597.  14    set if /E flag active (environment var APPEND exists)
  1598.  15    set if /X flag active
  1599. ----------2FB707-----------------------------
  1600. INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  1601.     AX = B707h
  1602.     BX = APPEND state bits (see AX=B706h)
  1603. SeeAlso: AX=B706h
  1604. ----------2FB710-----------------------------
  1605. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  1606.     AX = B710h
  1607. Return: AX = current APPEND state (see AX=B706h)
  1608.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1609.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  1610.     DL = major version
  1611.     DH = minor version
  1612. SeeAlso: AX=B702h
  1613. ----------2FB711-----------------------------
  1614. INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  1615.     AX = B711h
  1616. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  1617.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  1618.       is written over top of the filename passed to the INT 21h call.  The
  1619.       application must provide a sufficiently large buffer.     This state is
  1620.       reset after the next INT 21h call processed by APPEND.
  1621.     APPEND uses the byte at offset 3Dh in the PSP (see INT 21/AH=26h) to
  1622.       store the flag telling it to overwrite the filename
  1623. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  1624.       INT 21/AH=6Ch
  1625. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  1626. --------N-2FB800-----------------------------
  1627. INT 2F - network - INSTALLATION CHECK
  1628.     AX = B800h
  1629. Return: AL = status
  1630.         00h        not installed
  1631.         nonzero installed
  1632.           BX = installed component flags (test in this order!)
  1633.            bit 6   server
  1634.            bit 2   messenger
  1635.            bit 7   receiver
  1636.            bit 3   redirector
  1637.            bit 1   LANPUP (LANtastic 4.0)
  1638. Notes:    this function is supported by LAN Manager, LANtastic, NetWare Lite,
  1639.       SilverNET, 10NET, etc.
  1640.     LANtastic and NetWare Lite use only BL for the return value, preserving
  1641.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  1642.       differentiation between those two groups by setting BH to a nonzero
  1643.       value before the call and checking its value on return.
  1644. SeeAlso: AX=4E53h,AX=B809h
  1645. --------N-2FB800CXF041-----------------------
  1646. INT 2F - 10NET - INSTALLATION CHECK
  1647.     AX = B800h
  1648.     CX = F041h
  1649. Return: AL = status
  1650.         00h        not installed
  1651.         nonzero installed
  1652.         BX = installed component flags (test in this order!)
  1653.            bit 6   server
  1654.            bit 2   messenger
  1655.            bit 7   receiver
  1656.            bit 3   redirector
  1657.            bit 1   LANPUP (LANtastic 4.0)
  1658.         CX = 10Net data segment
  1659.         CX:DX -> 10Net Configuration Table (see AX=5E01h"10NET")
  1660. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  1661.       call becomes identical to the standard installation check above
  1662. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  1663. --------N-2FB803-----------------------------
  1664. INT 2F - network - GET NETWORK EVENT POST HANDLER
  1665.     AX = B803h
  1666. Return: ES:BX -> current event post handler (see AX=B804h)
  1667. Note:    this function is supported by 10NET v5.0
  1668. SeeAlso: AX=B804h,AX=B903h
  1669. --------N-2FB804-----------------------------
  1670. INT 2F - network - SET NETWORK EVENT POST HANDLER
  1671.     AX = B804h
  1672.     CX = (10NET) 0370h if 10Windows is hooking post handler
  1673.     ES:BX -> new event post handler
  1674. Notes:    used in conjunction with AX=B803h to hook into the network event post
  1675.       routine
  1676.     this function is supported by 10NET v5.0
  1677.     The specified handler is called on any network event.  Two events are
  1678.       defined: message received and critical network error.
  1679. SeeAlso: AX=B803h,AX=B904h
  1680.  
  1681. Values post routine is called with:
  1682.     AX = 0000h single block message
  1683.         DS:SI -> ASCIZ originator name
  1684.         DS:DI -> ASCIZ destination name
  1685.         ES:BX -> text header (see below)
  1686.     AX = 0001h start multiple message block
  1687.         CX = block group ID
  1688.         DS:SI -> ASCIZ originator name
  1689.         DS:DI -> ASCIZ destination name
  1690.     AX = 0002h multiple block text
  1691.         CX = block group ID
  1692.         ES:BX -> text header (see below)
  1693.     AX = 0003h end multiple block message
  1694.         CX = block group ID
  1695.     AX = 0004h message aborted due to error
  1696.         CX = block group ID
  1697.     AX = 0101h server received badly formatted network request
  1698.         Return: AX = FFFFh (PC LAN will process error)
  1699.     AX = 0102h unexpected network error
  1700.         ES:BX -> NCB (see INT 5C)
  1701.     AX = 0103h server received INT 24 error
  1702.         other registers as for INT 24, except AH is in BH
  1703.         Return: as below, but only 0000h and FFFFh allowed
  1704. Return: AX = response code
  1705.         0000h user post routine processed message
  1706.         0001h PC LAN will process message, but message window not displayed
  1707.         FFFFh PC LAN will process message
  1708.  
  1709. Format of text header:
  1710. Offset    Size    Description
  1711.  00h    WORD    length of text (maximum 512 bytes)
  1712.  02h  N BYTEs    text of message
  1713. Note:    all CRLF sequences in message text are replaced by 14h
  1714. --------N-2FB807-----------------------------
  1715. INT 2F - network - GET NetBIOS NAME NUMBER OF MACHINE NAME
  1716.     AX = B807h
  1717. Return: CH = NetBIOS name number of the machine name
  1718. SeeAlso: INT 21/AX=5E00h
  1719. --------N-2FB808-----------------------------
  1720. INT 2F U - network - RELINK KEYBOARD HANDLER
  1721.     AX = B808h
  1722.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  1723. Notes:    this call replaces the address to which the network software chains on
  1724.       an INT 09 without preserving the original value.  This allows a prior
  1725.       handler to unlink, but does not allow a new handler to be added
  1726.       such that the network gets the INT 09 first unless the new handler
  1727.       completely takes over INT 09 and never chains.
  1728.     this function is called by the DOS 3.2 KEYBxx.COM
  1729. SeeAlso: AX=B908h
  1730. --------N-2FB809-----------------------------
  1731. INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK
  1732.     AX = B809h
  1733. Return: AH = major version
  1734.     AL = minor version (decimal)
  1735. Notes:    this function is also supported by SilverNET
  1736.     NetWare Lite returns its own version number rather than a PC LAN
  1737.       compatibility version
  1738. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LAN Manager"
  1739. --------N-2FB809-----------------------------
  1740. INT 2F - PC LAN Program - VERSION CHECK
  1741.     AX = B809h
  1742. Return: AH = minor version (decimal)
  1743.     AL = major version
  1744. Notes:    this function is also supported in this form by LAN Manager, the DOS
  1745.       LAN Requester, and 10NET v5.0
  1746.     10NET returns version 1.10 (AX=0A01h) for compatibility
  1747. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  1748. --------N-2FB80A-----------------------------
  1749. INT 2F - PC Network 1.00 - ???
  1750.     AX = B80Ah
  1751.     ???
  1752. Return: ???
  1753. Program: PC Network is an early networking package which was renamed the
  1754.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  1755. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  1756. --------N-2FB80F-----------------------------
  1757. INT 2F - DOS LAN Requester - GET START PARAMETERS
  1758.     AX = B80Fh
  1759.     CX = size of return data buffer
  1760.     ES:DI -> return data buffer
  1761. Return: AX = status
  1762.          00h     network started
  1763.          nonzero network not started
  1764.     CX = number of bytes returned in buffer
  1765.     ES:DI buffer filled
  1766.  
  1767. Format of return data buffer:
  1768. Offset    Size    Description
  1769.  00h    BYTE    major version
  1770.  01h    BYTE    minor version
  1771.  02h    WORD    configuration flags given when network was started (see below)
  1772.  04h 15 BYTEs    NET START machine name (space padded)
  1773.  13h    BYTE    00h
  1774.  14h 9    BYTEs    NET START domain name (NULL padded)
  1775.  1Dh    BYTE    00h
  1776.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  1777.  3Eh    WORD    /SRV value
  1778.  40h    WORD    /ASG value
  1779.  42h    WORD    /NBC value
  1780.  44h    WORD    /NBS value
  1781.  46h    WORD    /BBC value
  1782.  48h    WORD    /BBS value
  1783.  4Ah    WORD    /PBC value
  1784.  4Ch    WORD    /PBS value
  1785.  4Eh    WORD    /PFS value
  1786.  50h    WORD    /PFT value
  1787.  52h    WORD    /PWT value
  1788.  54h    WORD    /KUC value
  1789.  56h    WORD    /KST value
  1790.  58h    WORD    /NVS value
  1791.  5Ah    WORD    /NMS value
  1792.  5Ch    WORD    /NDB value
  1793.  5Eh    WORD    /MBI value
  1794.  60h    BYTE    NetBIOS name number for machine name
  1795.  61h    BYTE    NetBIOS name number for domain name
  1796.  62h    WORD    NetBIOS sessions required for configuration
  1797.  64h    WORD    NetBIOS commands required for configuration
  1798.  66h    WORD    NetBIOS names required for configuration
  1799.  68h 128 BYTEs    NET START path (LANROOT)
  1800.  E8h    BYTE    00h
  1801.  
  1802. Bitfields for configuration flags:
  1803. Bit(s)    Description
  1804.  0    /NVS nonzero
  1805.  1    /NMS nonzero
  1806.  2    /API
  1807.  3    /HIM
  1808.  4    /LIM
  1809.  5    /ENC
  1810.  6    /POP
  1811.  7    /EMS
  1812.  8    /RPL
  1813.  9-12    reserved
  1814.  13    RDR started
  1815.  14    RCV started
  1816.  15    User is currently logged on
  1817. --------N-2FB900-----------------------------
  1818. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  1819.     AX = B900h
  1820. Return: AL = 00h if not installed
  1821.          FFh if installed
  1822. --------N-2FB901-----------------------------
  1823. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  1824.     AX = B901h
  1825. Return: AL = ???
  1826.     ES:BX -> RECEIVER.COM INT 2F handler
  1827. Desc:    allows more efficient execution by letting the caller bypass any other
  1828.       INT 2F handlers which have been added since RECEIVER.COM was
  1829.       installed
  1830. --------N-2FB903-----------------------------
  1831. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  1832.     AX = B903h
  1833. Return: ES:BX -> POST handler
  1834. SeeAlso: AX=B803h,AX=B904h
  1835. --------N-2FB904-----------------------------
  1836. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  1837.     AX = B904h
  1838.     ES:BX -> new POST handler
  1839. SeeAlso: AX=B804h,AX=B903h
  1840. --------N-2FB905-----------------------------
  1841. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  1842.     AX = B905h
  1843.     DS:BX -> 128-byte buffer for filename 1
  1844.     DS:DX -> 128-byte buffer for filename 2
  1845. Return: buffers filled from RECEIVER.COM internal buffers
  1846. Note:    use of filenames is unknown, but one appears to be for storing messages
  1847. SeeAlso: AX=B906h
  1848. --------N-2FB906-----------------------------
  1849. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  1850.     AX = B906h
  1851.     DS:BX -> 128-byte buffer for filename 1
  1852.     DS:DX -> 128-byte buffer for filename 2
  1853. Return: RECEIVER.COM internal buffers filled from user buffers
  1854. Note:    use of filenames is unknown, but one appears to be for storing messages
  1855. SeeAlso: AX=B905h
  1856. --------N-2FB908-----------------------------
  1857. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  1858.     AX = B908h
  1859.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  1860. Note:    this call replaces the address to which RECEIVER.COM chains on an
  1861.       INT 09 without preserving the original value.     This allows a prior
  1862.       handler to unlink, but does not allow a new handler to be added
  1863.       such that RECEIVER gets the INT 09 first.
  1864. SeeAlso: AX=B808h
  1865. --------V-2FBC00-----------------------------
  1866. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  1867.     AX = BC00h
  1868. Return: AL = 00h not installed, OK to install
  1869.        = 01h not installed, not OK to install
  1870.        = FFh installed
  1871.         BX = 5456h ("TV")
  1872. Note:    AH=BCh is the default value, which may be changed by a command line
  1873.       parameter to any value between 80h and FFh
  1874. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  1875. --------s-2FBC00BX3F3F-----------------------
  1876. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  1877.     AX = BC00h
  1878.     BX = 3F3Fh ('??')
  1879.     CX = 0000h
  1880.     DX = 0000h
  1881. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  1882. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  1883.       of sound boards; its primary programmer was Bryan Crane
  1884. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  1885. --------s-2FBC01-----------------------------
  1886. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  1887.     AX = BC01h
  1888.     BX = magic value 6D20h ('m ')
  1889.     CX = magic value 2076h (' v')
  1890.     DX = magic value 2020h ('  ')
  1891. Return: BX = ASCII major version (leading zeros significant)
  1892.     CX = ASCII minor version (leading zeros significant)
  1893. SeeAlso: AX=BC00h/BX=3F3Fh
  1894. --------s-2FBC02-----------------------------
  1895. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  1896.     AX = BC02h
  1897. Return: BX:DX -> state table
  1898. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  1899. --------s-2FBC03-----------------------------
  1900. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  1901.     AX = BC03h
  1902. Return: BX:DX -> function table
  1903. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  1904. --------s-2FBC04-----------------------------
  1905. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  1906.     AX = BC04h
  1907. Return: AX = 4D56h ('MV')
  1908.     BL = DMA channel
  1909.     CL = IRQ number
  1910. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  1911. --------V-2FBC06-----------------------------
  1912. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  1913.     AX = BC06h
  1914. Return: BX = 5456h ("TV")
  1915.     CH = major version
  1916.     CL = minor version
  1917.     DL = revision
  1918. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  1919. --------s-2FBC06-----------------------------
  1920. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  1921.     AX = BC06h
  1922. Return: AX = 4D56h ('MV')
  1923.     DX:BX -> status string (first byte 0Ch if no status message to display)
  1924. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  1925. --------s-2FBC0B-----------------------------
  1926. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  1927.     AX = BC0Bh
  1928. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  1929. SeeAlso: AX=BC00h/BX=3F3Fh
  1930. --------U-2FBE00-----------------------------
  1931. INT 2F - REDVIEW - INSTALLATION CHECK
  1932.     AX = BE00h
  1933. Return: AL = FFh if installed
  1934. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  1935.       copies data sent to standard output to standard error when the
  1936.       former has been redirected to a file, thus allowing the data to
  1937.       be seen on the screen at the same time it is captured in a file
  1938. --------N-2FBF00-----------------------------
  1939. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  1940.     AX = BF00h
  1941. Return: AL = FFh if installed
  1942. --------N-2FBF01-----------------------------
  1943. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  1944.     AX = BF01h
  1945.     ???
  1946. Return: ???
  1947. --------N-2FBF80-----------------------------
  1948. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  1949.     AX = BF80h
  1950.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  1951. Return: AL = FFh if installed
  1952.         ES:DI -> internal workspace
  1953. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  1954. --------F-2FC0-------------------------------
  1955. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  1956.     AH = C0h
  1957.     AL = function code (01h to 15h)
  1958. Return: ???
  1959. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  1960. --------N-2FC000-----------------------------
  1961. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  1962.     AX = C000h
  1963. Return: AL = FFh if installed
  1964.         DX:BX -> FAR entry point (see below)
  1965.         ES:SI -> signature string "LINKSUP$"
  1966. Notes:    LSL.COM may use any multiplex number between C0h and FFh; it searches
  1967.       for itself in that range, and installs using the first free multiplex
  1968.       number in the range if not already loaded.
  1969.     on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  1970.       its search for a previous installation
  1971.  
  1972. Call LSL entry point with:
  1973.  Function: "Request MLID Registration"
  1974.     BX = 0001h
  1975.     ES:SI -> registration??? record (see below)
  1976.     DS:DI -> buffer for LSL information block (see below)
  1977.     Return: AX = completion code (0000h,8001h) (see below)
  1978.         DS:DI buffer filled if successful
  1979.         BX,CX corrupted
  1980.  Function: get support entry points
  1981.     BX = 0002h
  1982.     ES:SI -> buffer for entry point record (see below)
  1983.     Return: ES:SI buffer filled
  1984.  Function: "Request MLID API entry point"
  1985.     BX = 0003h
  1986.     Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  1987.             (call with BX=function 00h-10h, not range-checked)
  1988. Notes:    LSL v1.10 and v2.05 execute BX=0003h for all other values of BX
  1989.     see "Novell LAN Driver Developer's Guide, Volume III" for more details
  1990.       on function 0001h
  1991.  
  1992. Values for completion code:
  1993.  0000h    successful
  1994.  8001h    out of resources
  1995.  8002h    bad parameter
  1996.  8003h    no more items
  1997.  8004h    item not present
  1998.  8005h    failed
  1999.  8006h    receive overflow
  2000.  8007h    canceled
  2001.  8008h    bad command
  2002.  8009h    duplicate entry
  2003.  800Ah    no such handler
  2004.  800Bh    no such driver
  2005.  
  2006. Format of registration record:
  2007. Offset    Size    Description
  2008.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  2009.           returning AX = completion code)
  2010.  04h    DWORD    -> ???
  2011.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  2012.  
  2013. Format of LSL information block:
  2014. Offset    Size    Description
  2015.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  2016.  04h    WORD    ???
  2017.  06h    WORD    ???
  2018. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  2019.       will crash if the above entry point is called with BX=0012h
  2020.  
  2021. Format of entry point record:
  2022. Offset    Size    Description
  2023.  00h    DWORD    pointer to protocol support entry point in LSL (see below)
  2024.  04h    DWORD    pointer to general support entry point in LSL (see below)
  2025.  
  2026. Call protocol support entry point with:
  2027.     BX = function number
  2028.         0000h ???
  2029.         0001h ???
  2030.         0002h ???
  2031.         0003h "ScheduleAESEvent"
  2032.         ES:SI -> AES ECB to be scheduled (see below for format)
  2033.         Return: ES,SI preserved
  2034.         0004h "CancelAESEvent"
  2035.         ES:SI -> ECB to be cancelled (see below for format)
  2036.         Return: ES,SI preserved
  2037.         0005h "GetIntervalMarker"
  2038.         Return: DX:AX = current interval marker in milliseconds
  2039.             all other registers preserved
  2040.         0006h "RegisterStack"
  2041.         AX = logical board number
  2042.         ES:SI -> bound stack info structure (see below)
  2043.         Return: BX = assigned Stack ID if AX=0000h
  2044.         0007h "DeRegisterStack"
  2045.         AX = protocol stack's assigned Stack ID
  2046.         0008h "RegisterDefaultStack"
  2047.         AX = logical board number
  2048.         ES:SI -> stack info structure (see below)
  2049.         0009h "DeRegisterDefaultStack"
  2050.         AX = logical board number
  2051.         000Ah "RegisterPrescanStack"
  2052.         AX = logical board number
  2053.         ES:SI -> stack info structure (see below)
  2054.         000Bh "DeRegisterPrescanStack"
  2055.         AX = logical board number
  2056.         000Ch "SendPacket"
  2057.         ES:SI -> send ECB
  2058.         Return: interrupts disabled
  2059.         000Dh ???
  2060.         000Eh ???
  2061.         000Fh ???
  2062.         0010h "GetStackIDFromName"
  2063.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  2064.         Return: BX = Stack ID if AX=0000h
  2065.         0011h "GetPIDFromStackIDBoard"
  2066.         AX = Stack ID for protocol
  2067.         CX = logical board number
  2068.         ES:SI -> 6-byte buffer for protocol ID
  2069.         0012h "GetMLIDControlEntry"
  2070.         AX = logical board number
  2071.         Return: ES:SI -> MLID control handler (see below) if AX=0000h
  2072.         0013h "GetProtocolControlEntry"
  2073.         AX = Stack ID or
  2074.             FFFEh Prescan stack
  2075.                 CX = logical board number
  2076.             FFFFh default protocol
  2077.                 CX = logical board number
  2078.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  2079.                 (see below)
  2080.         0014h "GetLSLStatistics"
  2081.         Return: AX = 0000h (successful)
  2082.             ZF set
  2083.             ES:SI -> LSL statistics table (see below)
  2084.         0015h "BindStack"
  2085.         AX = protocol stack's assigned Stack ID
  2086.         CX = logical board number
  2087.         0016h "UnbindStack"
  2088.         AX = protocol stack's assigned Stack ID
  2089.         CX = logical board number
  2090.         0017h "AddProtocolID"
  2091.         AX = frame type ID code
  2092.         ES:SI -> 6-byte protocol ID
  2093.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  2094.         0018h "RelinquishControl"
  2095.         Return: after LSL performs any necessary background processing
  2096.         0019h "GetLSLConfiguration"
  2097.         Return: AX = 0000h (successful)
  2098.             ZF set
  2099.             ES:SI -> LSL configuration table (see below)
  2100.         001Ah "GetTickMarker"
  2101.         Return: AX = number of 55ms ticks since LSL loaded
  2102.             BX destroyed
  2103. Return: AX = completion code (see above)
  2104.     ZF set if successful
  2105.     SS:SP, DS, BP preserved; most other registers may be destroyed
  2106.  
  2107. Call general support entry point with:
  2108.     BX = function number
  2109.         0000h "Allocate Memory" (obsolete)
  2110.          always returns AX=8008h (BAD_COMMAND)
  2111.         0001h "Free Memory" (obsolete)
  2112.          always returns AX=8008h (BAD_COMMAND)
  2113.         0002h "Realloc Memory" (obsolete)
  2114.          always returns AX=8008h (BAD_COMMAND)
  2115.         0003h "Memory Statistics" (obsolete)
  2116.          always returns AX=8008h (BAD_COMMAND)
  2117.         0004h "Add Memory To Pool" (obsolete)
  2118.          always returns AX=8008h (BAD_COMMAND)
  2119.         0005h "AddGeneralService"
  2120.         ES:SI -> General Service Control Block (see below)
  2121.         0006h "RemoveGeneralService"
  2122.         ES:SI -> General Service Control Block (see below)
  2123.         0007h "GetNETcfgPath"
  2124.         Return: AX = 0000h (successful)
  2125.             DS:DX -> ASCIZ pathname for NET.CFG
  2126.         0008h U ???     (in LSL 1.10)
  2127.         Return: AX = 0000h
  2128.             ES:SI -> ??? (a 22-byte data area)
  2129.         000Ah "GetCriticalSectionStatus"
  2130.         Return: BX = total outstanding calls to "StartCriticalSection"
  2131.         000Bh "ServiceEvents"
  2132.         interrupts disabled
  2133.         Return: interrupts disabled
  2134.         0010h "GetStackECB"
  2135.         DS:DI -> Lookahead structure (see below)
  2136.         interrupts disabled
  2137.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  2138.             interrupts disabled
  2139.         8000h-FFFFh reserved for user general service providers
  2140. Return: AX = completion code (see above)
  2141.     ZF set if successful
  2142.     SS:SP, DS, BP preserved
  2143.  
  2144. Call MLID control handler with:
  2145.     AX = logical board number
  2146.     BX = function number
  2147.         0000h "GetMLIDConfiguration"
  2148.         Return: ES:SI -> MLID's configuration table if successful
  2149.                 (see below for format)
  2150.         0001h "GetMLIDStatistics"
  2151.         Return: ES:SI -> MLID's statistics table if successful
  2152.                 (see below for format)
  2153.         0002h "AddMulticastAddress"
  2154.         ES:SI -> 6-byte multicast address to add
  2155.         0003h "DeleteMulticastAddress"
  2156.         ES:SI -> 6-byte multicast address to delete
  2157.         0005h "MLIDShutdown"
  2158.         CX = type
  2159.             0000h permanent (also deregisters from LSL)
  2160.             other temporary (shutdown hardware only)
  2161.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  2162.         0007h "Create Connection" (obsolete?)
  2163.         ???
  2164.         0008h "Delete Connection" (obsolete?)
  2165.         ???
  2166.         0009h "SetLookAheadSize"
  2167.         CX = requested lookahead size (00h-80h)
  2168.         0010h "PromiscuousChange"
  2169.         CX = what to receive promiscuously
  2170.             bit 0: MAC frames
  2171.             bit 1: non-MAC frames
  2172.         0011h "RegisterReceiveMonitor"
  2173.         CX = subfunction
  2174.             0000h disable receive monitoring
  2175.             else  enable receive monitoring
  2176.         ES:SI -> monitor receive routine
  2177.         ES:DI -> monitor transmit routine
  2178.         0012h "Driver Poll" (obsolete?)
  2179.         ???
  2180. Return: AX = completion code (see above)
  2181.     ZF set if successful
  2182. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  2183.       mode flags field of the MLID's configuration table
  2184.  
  2185. Call protocol stack control entry point with:
  2186.     BX = function number
  2187.         0000h "GetProtocolStackConfiguration"
  2188.         Return: ES:SI -> protocol stack's configuration table
  2189.                 (see below)
  2190.         0001h "GetProtocolStackStatistics"
  2191.         Return: ES:SI -> protocol stack's statistics table (see below)
  2192.         0002h "BindToMLID"
  2193.         CX = board number to bind to
  2194.         ES:SI -> implementation-dependant parameter string
  2195.         0003h "UnBindFromMLID"
  2196.         CX = board number from which protocol should unbind
  2197.         ES:SI -> optional implementation-dependant parameter string
  2198.         0004h "MLIDDeRegistered"
  2199.         CX = board number that has de-registered from LSL
  2200. Return: AX = status
  2201.         0000h successful
  2202.         else implementation-dependant error codes
  2203.     ZF set if successful
  2204.     SS:SP, DS, BP preserved
  2205.  
  2206. Format of AES ECB:
  2207. Offset    Size    Description
  2208.  00h    DWORD    "AESLink" pointer used by LSL for list management
  2209.  04h    DWORD    number of milliseconds to wait
  2210.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  2211.  0Ch    DWORD    -> function to be invoked when time expires
  2212.         ES:SI will point to this structure on entry,
  2213.         DS, BP, and SS:SP must be preserved.
  2214.  
  2215. Format of LSL Configuration Table:
  2216. Offset    Size    Description
  2217.  00h    BYTE    major version of configuration table
  2218.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  2219.  02h  8 BYTEs    reserved
  2220.  0Ah    BYTE    LSL major version (decimal)
  2221.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  2222. ---LSL 1.0x ---
  2223.  0Ch 14 BYTEs    reserved
  2224. ---LSL 1.10+ ---
  2225.  0Ch    WORD    maximum number of boards which LSL can handle
  2226.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  2227.  10h 12 BYTEs    reserved
  2228.  
  2229. Format of LSL Statistics Table:
  2230. Offset    Size    Description
  2231.  00h    BYTE    major version of statistics table format
  2232.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  2233.  02h    WORD    "GenericCounters" number of counters in static portion of
  2234.         table
  2235.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  2236.         counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  2237.         is the next field, etc.
  2238.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  2239.  0Ch    DWORD    reserved
  2240.  10h    DWORD    reserved
  2241.  14h    DWORD    "AESEventsCount" number of completed AES events
  2242.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  2243.         sections inside the MLIDs
  2244.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  2245.  20h    DWORD    reserved
  2246.  24h    DWORD    reserved
  2247.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  2248.  2ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  2249.         protocol stack
  2250.  30h    WORD    "NumberCustom" number of custom variables that follow
  2251.  32h  N DWORDs    custom counters
  2252.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2253.     var    length-prepended and NULL terminated string for Counter 0
  2254.     ...
  2255.     var    length-prepended and NULL terminated string for Counter N-1
  2256.  
  2257. Format of Protocol Stack Statistics Table:
  2258. Offset    Size    Description
  2259.  00h    BYTE    statistics table major version
  2260.  01h    BYTE    statistics table minor version (decimal, 0-99)
  2261.  02h    WORD    number of generic counters following
  2262.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  2263.  08h    DWORD    TotalTxPackets
  2264.  0ch    DWORD    TotalRxPackets
  2265.  10h    DWORD    IgnoredRxPackets
  2266.  14h    WORD    number of custom counters
  2267.  16h  N DWORDs    custom counters
  2268.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2269.     var    length-prepended and NULL terminated string for Counter 0
  2270.     ...
  2271.     var    length-prepended and NULL terminated string for Counter N-1
  2272.  
  2273. Format of Protocol Stack Configuration Table:
  2274. Offset    Size    Description
  2275.  00h    BYTE    configuration table major version
  2276.  01h    BYTE    configuration table minor version (decimal, 0-99)
  2277.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  2278.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  2279.  0Ah    BYTE    protocol stack major version
  2280.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  2281.  0Ch 16 BYTEs    reserved for future use
  2282.  
  2283. Format of MLID Configuration Table:
  2284. Offset    Size    Description
  2285.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  2286.  1Ah    BYTE    configuration table major version
  2287.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  2288.  1Ch  6 BYTEs    node address
  2289.  22h    WORD    MLID mode flags (see below)
  2290.  24h    WORD    board number
  2291.  26h    WORD    board instance (if more than one of same board installed)
  2292.  28h    WORD    maximum packet size
  2293.  2Ah    WORD    BestDataSize
  2294.  2Ch    WORD    WorstDataSize
  2295.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  2296.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  2297.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  2298.  3Ah    WORD    reserved (0000h)
  2299.  3Ch    WORD    frame type ID
  2300.  3Eh    WORD    TransportTime (milliseconds)
  2301.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  2302.  44h    WORD    lookahead size
  2303.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  2304.  48h    WORD    QueueDepth
  2305.  4Ch  6 BYTEs    reserved (0)
  2306.  54h    BYTE    driver major version
  2307.  55h    BYTE    driver minor version (decimal, 0-99)
  2308.  56h    WORD    flags
  2309.         bits 10-9: specialized multicast support
  2310.             00 = Group addressing is default for medium
  2311.             01 = Invalid
  2312.             10 = Filter group address in MLID.
  2313.             11 = Adapter filters group address.
  2314.         bit 2: supports Micro Channel cards
  2315.         bit 1: supports ISA cards
  2316.         bit 0: supports EISA cards
  2317.  58h    WORD    send retries
  2318.  5Ah    DWORD    ConfigTableLink
  2319.  5Eh    WORD    MLID sharing flags (see below)
  2320.  60h    WORD    slot number
  2321.  62h    WORD    I/O address 1
  2322.  64h    WORD    I/O range 1
  2323.  66h    WORD    I/O address 2
  2324.  68h    WORD    I/O range 2
  2325.  6Ah    DWORD    memory address 1
  2326.  6Eh    WORD    memory size 1
  2327.  70h    DWORD    memory address 2
  2328.  74h    WORD    memory size 2
  2329.  76h    BYTE    interrupt line 1
  2330.  77h    BYTE    interrupt line 2
  2331.  78h    BYTE    DMA line 1
  2332.  79h    BYTE    DMA line 2
  2333.  
  2334. Bitfields for MLID mode flags:
  2335. Bit(s)    Description
  2336.  15    MLID supports Octet Reversal
  2337.  14    node address is non-canonical
  2338.  13    promiscuous mode is supported
  2339.  12-8    reserved
  2340.  7    LDataSize field in LookAhead structure supported
  2341.  6    raw send supported
  2342.  5    MLID needs to be polled by LSL
  2343.  4    reserved (0)
  2344.  3    multicasting is supported
  2345.  2    not currently used by DOS ODI, set to 0.
  2346.  1    network card uses DMA.
  2347.  0    RealDriverBit, always set to 1.
  2348.  
  2349. Bitfields for MLID sharing flags:
  2350. Bit(s)    Description
  2351.  8    NIC can share DMA2
  2352.  7    NIC can share DMA1
  2353.  6    NIC can share IRQ2
  2354.  5    NIC can share IRQ1
  2355.  4    NIC can share Memory2
  2356.  3    NIC can share Memory1
  2357.  2    NIC can share IO2
  2358.  1    NIC can share IO1
  2359.  0    MLID is currently shut down
  2360.  
  2361. Format of MLID Statistics Table:
  2362. Offset    Size    Description
  2363.  00h    BYTE    driver statistics table major version
  2364.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  2365.  02h    WORD    number of generic counters (typically 13)
  2366.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  2367.  08h    DWORD    TotalTxCount
  2368.  0Ch    DWORD    TotalRxCount
  2369.  10h    DWORD    NoECBAvailableCount
  2370.  14h    DWORD    TxTooBigCount
  2371.  18h    DWORD    TxTooSmallCount
  2372.  1ch    DWORD    RxOverflowCount
  2373.  20h    DWORD    RxTooBigCount
  2374.  24h    DWORD    RxTooSmallCount
  2375.  28h    DWORD    TxMiscCount
  2376.  2ch    DWORD    RxMiscCount
  2377.  30h    DWORD    TxRetryCount
  2378.  34h    DWORD    RxChecksumErrorCount
  2379.  38h    DWORD    RxMismatchCount
  2380.  3Ch    WORD    number of custom counters
  2381.  3Eh  N DWORDs    custom counters
  2382.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  2383.     var    length-prepended and NULL terminated string for Counter 0
  2384.     ...
  2385.     var    length-prepended and NULL terminated string for Counter N-1
  2386.  
  2387. Format of bound stack info structure:
  2388. Offset    Size    Description
  2389.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  2390.  04h    DWORD    -> receive handler
  2391.  08h    DWORD    -> control handler
  2392.  
  2393. Format of stack info structure:
  2394. Offset    Size    Description
  2395.  00h    DWORD    -> receive handler
  2396.  04h    DWORD    -> control handler
  2397.  
  2398. Format of General Service Control Block:
  2399. Offset    Size    Description
  2400.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  2401.  04h    DWORD    -> entry point for general service handler
  2402.  08h    WORD    command code for this general service (8000h-FFFFh)
  2403. Note:    the control block must not be altered or deallocated until the general
  2404.       service is removed
  2405.  
  2406. Format of Lookahead structure:
  2407. Offset    Size    Description
  2408.  00h    DWORD    -> Media header
  2409.  04h    DWORD    -> lookahead buffer
  2410.  08h    WORD    length of lookahead buffer
  2411.  0Ah  6 BYTEs    protocol ID
  2412.  10h    WORD    logical board number
  2413.  12h    WORD    lookahead size
  2414. --------f-2FC000-----------------------------
  2415. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  2416.     AX = C000h
  2417. Return: AL = FFh if installed
  2418.        ES:DI -> signature string "FN32 32CHAR TSR"
  2419. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  2420. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  2421.       managing dictionary files in each directory which contains long
  2422.       filenames
  2423. --------M-2FC000-----------------------------
  2424. INT 2F - QMR - INSTALLATION CHECK
  2425.     AX = C000h
  2426. Return: AL = FFh if installed
  2427.         ES:DI -> signature string "QMR1!"
  2428. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  2429.       service interrupt (int 33h) and substitutes a fast software
  2430.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  2431. Note:    QMR may use any multiplex number between C0h and FFh; it searches
  2432.      for itself in that range, and installs using the first free multiplex
  2433.      number in the range if not already loaded.
  2434. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  2435. --------V-2FC000-----------------------------
  2436. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  2437.     AX = C000h
  2438. Return: AL = FFh if installed
  2439.         BX = segment of resident code
  2440. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  2441.       Javurek
  2442. Note:    VGAsave may use any AH value from C0h through FFh; the transient
  2443.       portion of VGAsave compares the first 38 bytes of the resident code
  2444.       (addressed through BX) against its own copy of the resident code to
  2445.       complete the installation check
  2446. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  2447. Index:    screen saver;VGAsave
  2448. --------V-2FC000-----------------------------
  2449. INT 2F - AD-DOS - INSTALLATION CHECK
  2450.     AX = C000h
  2451. Return: AL = FFh if installed
  2452.         BX = 4144h ('AD')
  2453.         CX = 2D44h ('-D')
  2454.         DX = 4F53h ('OS')
  2455. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2456.       MS Windows
  2457. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2458.       After Dark will try successive values up to AH=FFh
  2459. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h,INT 14/AX=AA01h
  2460. Index:    screen saver;AD-DOS
  2461. --------U-2FC000-----------------------------
  2462. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  2463.     AX = C000h
  2464. Return: AL = FFh if installed
  2465.         ES = segment of resident code
  2466. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  2467.       with 3-mode floppy drives to read Wang document diskettes
  2468. Note:    AH=C0h is the default; WANG_ER scans all multiplex numbers from C0h to
  2469.       FFh for a free spot on installation.    The installation check is
  2470.       completed by comparing the resident code with the copy in the
  2471.       transient program
  2472. --------i-2FC000-----------------------------
  2473. INT 2F - ASPIHOOK.SYS - INSTALLATION CHECK
  2474.     AX = C000h
  2475. Return: AL = FFh if multiplex number in use
  2476.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  2477. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  2478.       ASPI host manager; it is part of the Personal Measure system
  2479.       activity monitor from Spirit of Performance, Inc.
  2480. Note:    AH=C0h is the default; ASPIHOOK searches for a free multiplex number
  2481.       between C0h and FFh on which to install itself
  2482. SeeAlso: AX=C000h"PMEASURE"
  2483. --------i-2FC000-----------------------------
  2484. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  2485.     AX = C000h
  2486. Return: AL = FFh if multiplex number in use
  2487.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  2488. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  2489.       is part of the Personal Measure system activity monitor from Spirit
  2490.       of Performance, Inc.
  2491. Notes:    AH=C0h is the default; PMEASURE.EXE searches for a free multiplex
  2492.       number between C0h and FFh on which to install itself. If
  2493.       ASPIHOOK.SYS is already installed, PMEASURE.EXE uses the next higher
  2494.       free multiplex number.
  2495. SeeAlso: AX=C000h"ASPIHOOK"
  2496. --------c-2FC000-----------------------------
  2497. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  2498.     AX = C000h
  2499. Return: AL = FFh if installed
  2500.         SI = signature value 20D6h
  2501.         DI = signature value 8761h
  2502.         ES:BX -> configuration table (see below)
  2503.         CX = ??? (0300h)
  2504.         DX = ??? (0020h)
  2505. Program: PCACHE is the resident print spooler portion of PrintCache by
  2506.       LaserTools; it may use either memory or disk space to spool output
  2507. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2508.       with a commandline switch
  2509. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  2510.  
  2511. Format of configuration table:
  2512. Offset    Size    Description
  2513.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  2514.  1Ah  2 BYTEs    ???
  2515.  1Ch    DWORD    -> data table (see below)
  2516.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  2517.  24h  5 BYTEs    ???
  2518.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  2519.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  2520.  37h    WORD    buffered port BIOS port number
  2521.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  2522.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  2523.  40h    WORD    physical port BIOS port number
  2524.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  2525.  47h    BYTE    port driver IRQ
  2526.  48h 21 BYTEs    ???
  2527.  5Dh    WORD    buffer size in K
  2528.  5Fh 27 BYTEs    ???
  2529.  7Ah    BYTE    popup hotkey shift states (see INT 16/AH=02h)
  2530.  7Bh    BYTE    popup hotkey scan code (see INT 09h"IRQ1")
  2531.  7Ch  4 BYTEs    ???
  2532.  80h 20 BYTEs    ASCIZ printer type name
  2533.     ???
  2534.  
  2535. Format of data table:
  2536. Offset    Size    Description
  2537.  00h  2 BYTEs    ???
  2538.  02h    DWORD    -> ??? entry point
  2539.     ???
  2540. --------F-2FC000BX444B-----------------------
  2541. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  2542.     AX = C000h
  2543.     BX = 444Bh ('DK')
  2544.     CX = 4A4Eh ('AN')
  2545. Return: AL = status
  2546.         00h not installed, OK to install
  2547.         FFh installed
  2548.         BX = 646Bh ('dk')
  2549.         CX = 6A6Eh ('an')
  2550. Note:    this TSR will use any free multiplex number from C0h to FFh
  2551. SeeAlso: AH=C0h"MTEZ"
  2552. --------M-2FC001-----------------------------
  2553. INT 2F - QMR - REQUEST HARDWARE RESET
  2554.     AX = C001h
  2555. Return: ES = QMR code segment
  2556.     AL destroyed
  2557. Desc:    this function is used to force a full mouse reset when QMR is installed
  2558. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2559. --------V-2FC001ES0000-----------------------
  2560. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  2561.     AX = C001h
  2562.     ES = 0000h
  2563. Return: AL = 00h if successful
  2564.         ES = AD-DOS TSR Code Segment
  2565. SeeAlso: AX=C000h"AD-DOS"
  2566. Index:    screen saver;AD-DOS
  2567. --------c-2FC001-----------------------------
  2568. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  2569.     AX = C001h
  2570. Return: AL = FFh if installed
  2571.         ES:BX -> ???
  2572.         ES:DX -> ???
  2573.         ES:SI -> ???
  2574.         ES:DI -> ??? (equivalent to AX=C002h)
  2575. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  2576. --------V-2FC002-----------------------------
  2577. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  2578.     AX = C002h
  2579. Return: AL = 00h if successful
  2580.         BX = status
  2581.         0000h no input since last check
  2582.         0001h new input available
  2583. Note:    this call also resets the new-input flag
  2584. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2585. Index:    screen saver;AD-DOS
  2586. --------M-2FC002-----------------------------
  2587. INT 2F - QMR - DISABLE QMR
  2588.     AX = C002h
  2589. Return: ES = QMR code segment
  2590.     AL destroyed
  2591. Desc:    this call temporarily disables QMR
  2592. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  2593. --------c-2FC002-----------------------------
  2594. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  2595.     AX = C002h
  2596. Return: AX = ??? in K
  2597.     BX = size of print buffer in K
  2598. Program: PCACHE is the resident print spooler portion of PrintCache by
  2599.       LaserTools; it may use either memory or disk space to spool output
  2600. SeeAlso: AX=C000h"PCACHE"
  2601. --------V-2FC003-----------------------------
  2602. INT 2F - AD-DOS - SET MINUTES TO WAIT
  2603.     AX = C003h
  2604.     BX = minutes to wait before blanking screen
  2605. Return: AL = 00h if successful
  2606. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2607.       MS Windows
  2608. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2609.       After Dark will try successive values up to AH=FFh
  2610.     this call also resets the delay timer
  2611. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  2612. Index:    screen saver;AD-DOS
  2613. --------M-2FC003-----------------------------
  2614. INT 2F - QMR - ENABLE QMR
  2615.     AX = C003h
  2616. Return: ES = QMR code segment
  2617.     AL destroyed
  2618. Desc:    this call enables QMR after it has been disabled
  2619. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  2620. --------c-2FC003-----------------------------
  2621. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2622.     AX = C003h
  2623. Return: BX destroyed
  2624. SeeAlso: AX=C004h"PCACHE"
  2625. --------V-2FC004-----------------------------
  2626. INT 2F - AD-DOS - GET MINUTES TO WAIT
  2627.     AX = C004h
  2628. Return: AL = 00h if successful
  2629.         BX = minutes to wait before blanking screen
  2630. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  2631. Index:    screen saver;AD-DOS
  2632. --------c-2FC004-----------------------------
  2633. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2634.     AX = C004h
  2635. Return: BX destroyed
  2636. SeeAlso: AX=C003h"PCACHE"
  2637. --------V-2FC005-----------------------------
  2638. INT 2F - AD-DOS - SET BLANKER STATUS
  2639.     AX = C005h
  2640.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  2641. Return: AL = 00h if successful
  2642. SeeAlso: AX=C006h"AD-DOS"
  2643. Index:    screen saver;AD-DOS
  2644. --------c-2FC005-----------------------------
  2645. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2646.     AX = C005h
  2647.     ???
  2648. Return: BX destroyed
  2649.     ???
  2650. Program: PCACHE is the resident print spooler portion of PrintCache by
  2651.       LaserTools; it may use either memory or disk space to spool output
  2652. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2653.       with a commandline switch
  2654. SeeAlso: AX=C000h"PCACHE"
  2655. --------V-2FC006-----------------------------
  2656. INT 2F - AD-DOS - GET BLANKER STATUS
  2657.     AX = C006h
  2658. Return: AL = 00h if successful
  2659.         BX = current state of screen blanker (0000h inactive, 0001h active)
  2660. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2661.       MS Windows
  2662. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2663.       After Dark will try successive values up to AH=FFh
  2664. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  2665. Index:    screen saver;AD-DOS
  2666. --------c-2FC006-----------------------------
  2667. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2668.     AX = C006h
  2669.     ???
  2670. Return: BX destroyed
  2671.     ???
  2672. Note:    this function appears to be identical to AX=C007h
  2673. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  2674. --------V-2FC007-----------------------------
  2675. INT 2F - AD-DOS - SET HOT KEY
  2676.     AX = C007h
  2677.     BX = hot key
  2678.     CL = hot key shift status
  2679. Return: AL = 00h if successful
  2680. SeeAlso: AX=C008h"AD-DOS"
  2681. Index:    screen saver;AD-DOS
  2682. --------c-2FC007-----------------------------
  2683. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2684.     AX = C007h
  2685.     ???
  2686. Return: BX destroyed
  2687.     ???
  2688. Note:    this function appears to be identical to AX=C006h
  2689. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  2690. --------V-2FC008-----------------------------
  2691. INT 2F - AD-DOS - GET CURRENT HOT KEY
  2692.     AX = C008h
  2693. Return: AX = status
  2694.         0000h successful
  2695.         BX = Hot Key
  2696.         CL = Hot Key Shift Status
  2697.         0008h otherwise
  2698. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  2699. Index:    screen saver;AD-DOS
  2700. --------c-2FC008-----------------------------
  2701. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2702.     AX = C008h
  2703. Return: BX destroyed
  2704. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  2705. --------V-2FC009-----------------------------
  2706. INT 2F - AD-DOS - UNBLANK MONITOR
  2707.     AX = C009h
  2708. Return: AL = 00h if successful
  2709. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2710.       MS Windows
  2711. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2712.       After Dark will try successive values up to AH=FFh
  2713.     this function works by simulating keyboard activity
  2714. Index:    screen saver;AD-DOS
  2715. --------c-2FC009-----------------------------
  2716. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2717.     AX = C009h
  2718. Return: BX destroyed
  2719. Program: PCACHE is the resident print spooler portion of PrintCache by
  2720.       LaserTools; it may use either memory or disk space to spool output
  2721. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2722.       with a commandline switch
  2723. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  2724. --------V-2FC00A-----------------------------
  2725. INT 2F - AD-DOS - ???
  2726.     AX = C00Ah
  2727. Return: AX = status
  2728.         0000h successful
  2729.         BH = ??
  2730.         BL = ??
  2731.         000Ah failed
  2732. Index:    screen saver;AD-DOS
  2733. --------c-2FC00A-----------------------------
  2734. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2735.     AX = C00Ah
  2736.     ???
  2737. Return: AH = bit flags
  2738.         bit 5: ???
  2739.     AL = bit flags
  2740.         bit 4: ???
  2741.         bit 3: ???
  2742.     BX destroyed
  2743.     ???
  2744. SeeAlso: AX=C000h"PCACHE"
  2745. --------V-2FC00B-----------------------------
  2746. INT 2F - AD-DOS - ???
  2747.     AX = C00Bh
  2748. Return: AX = status
  2749.         0000h successful
  2750.         000Bh failed
  2751. Index:    screen saver;AD-DOS
  2752. --------c-2FC00B-----------------------------
  2753. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2754.     AX = C00Bh
  2755. Return: BX destroyed
  2756. SeeAlso: AX=C000h"PCACHE"
  2757. --------V-2FC00C-----------------------------
  2758. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  2759.     AX = C00Ch
  2760. Return: AX = status
  2761.         0000h successful
  2762.         000Ch failed
  2763. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  2764.       MS Windows
  2765. Note:    AH=C0h is the default multiplex number; if this is already in use,
  2766.       After Dark will try successive values up to AH=FFh
  2767. Index:    screen saver;AD-DOS
  2768. --------c-2FC00C-----------------------------
  2769. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2770.     AX = C00Ch
  2771. Return: AX = ??? (0000h)
  2772.     BX = ??? (0000h)
  2773.     CX = ??? (0100h)
  2774.     DL = ???
  2775.     DH = ???
  2776. SeeAlso: AX=C000h"PCACHE"
  2777. --------c-2FC00D-----------------------------
  2778. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  2779.     AX = C00Dh
  2780.     DL = ???
  2781. Return: BX destroyed
  2782. Program: PCACHE is the resident print spooler portion of PrintCache by
  2783.       LaserTools; it may use either memory or disk space to spool output
  2784. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2785.       with a commandline switch
  2786. SeeAlso: AX=C000h"PCACHE"
  2787. --------V-2FC00E-----------------------------
  2788. INT 2F - AD-DOS - SET PASSWORD STATUS
  2789.     AX = C00Eh
  2790.     BX = new state (0000h disabled, 0001h enabled)
  2791. Return: ???
  2792. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  2793. Index:    screen saver;AD-DOS
  2794. --------c-2FC00E-----------------------------
  2795. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  2796.     AX = C00Eh
  2797.     ES:DX -> ???
  2798. Return: BX destroyed
  2799. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  2800.       but ignored if already set; a counter is incremented
  2801. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  2802. --------V-2FC00F-----------------------------
  2803. INT 2F - AD-DOS - GET PASSWORD STATUS
  2804.     AX = C00Fh
  2805. Return: BX = current state (0000h disabled, 0001h enabled)
  2806. SeeAlso: AX=C00Eh"AD-DOS"
  2807. Index:    screen saver;AD-DOS
  2808. --------c-2FC00F-----------------------------
  2809. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  2810.     AX = C00Fh
  2811. Return: BX destroyed
  2812. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  2813.       internal pointer variable to 0000h:0000h when it reaches zero
  2814. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  2815. --------c-2FC010-----------------------------
  2816. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2817.     AX = C010h
  2818.     CX = index of ??? table (00h-02h, others treated as 00h)
  2819.     SI = offset into data table
  2820. Return:    AL = byte at specified offset into table
  2821.     BX destroyed
  2822. SeeAlso: AX=C000h"PCACHE"
  2823. --------c-2FC011-----------------------------
  2824. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2825.     AX = C011h
  2826. Return: AX = ??? (0007h)
  2827.     BX = ??? (0001h)
  2828.     CH = ???
  2829.     CL = ???
  2830. SeeAlso: AX=C000h"PCACHE"
  2831. --------c-2FC012-----------------------------
  2832. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  2833.     AX = C012h
  2834. Return: AX = ???
  2835.     BX = ???
  2836.     CX = ???
  2837.     DX = ???
  2838. SeeAlso: AX=C000h"PCACHE"
  2839. --------c-2FC013-----------------------------
  2840. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2841.     AX = C013h
  2842.     ???
  2843. Return: BX destroyed
  2844.     ???
  2845. Program: PCACHE is the resident print spooler portion of PrintCache by
  2846.       LaserTools; it may use either memory or disk space to spool output
  2847. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2848.       with a commandline switch
  2849. SeeAlso: AX=C000h"PCACHE"
  2850. --------c-2FC014-----------------------------
  2851. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2852.     AX = C014h
  2853.     ???
  2854. Return: BX destroyed
  2855.     ???
  2856. SeeAlso: AX=C000h"PCACHE"
  2857. --------c-2FC015-----------------------------
  2858. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2859.     AX = C015h
  2860.     ???
  2861. Return: BX destroyed
  2862.     ???
  2863. SeeAlso: AX=C000h"PCACHE"
  2864. --------c-2FC016-----------------------------
  2865. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  2866.     AX = C016h
  2867. Return: BX destroyed
  2868. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  2869. --------c-2FC017-----------------------------
  2870. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  2871.     AX = C017h
  2872. Return: BX destroyed
  2873. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  2874. --------c-2FC018-----------------------------
  2875. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2876.     AX = C018h
  2877.     ???
  2878. Return: BX destroyed
  2879.     ???
  2880. Note:    the first instruction of this function is an indirect jump which points
  2881.       at a RET by default
  2882. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  2883. --------c-2FC019-----------------------------
  2884. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2885.     AX = C019h
  2886.     ???
  2887. Return: BX destroyed
  2888.     ???
  2889. Note:    the first instruction of this function is an indirect jump which points
  2890.       at a RET by default
  2891. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  2892. --------c-2FC01A-----------------------------
  2893. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  2894.     AX = C01Ah
  2895. Return: BX destroyed
  2896. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  2897. --------c-2FC01B-----------------------------
  2898. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  2899.     AX = C01Bh
  2900. Return: BX destroyed
  2901. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  2902. --------c-2FC01C-----------------------------
  2903. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  2904.     AX = C01Ch
  2905.     ???
  2906. Return: AX = ???
  2907.     BX destroyed
  2908. SeeAlso: AX=C000h"PCACHE"
  2909. --------c-2FC01D-----------------------------
  2910. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  2911.     AX = C01Dh to C01Fh
  2912. Return: BX destroyed
  2913. Program: PCACHE is the resident print spooler portion of PrintCache by
  2914.       LaserTools; it may use either memory or disk space to spool output
  2915. Note:    AH=C0h is the default, and may be set to any value from C0h to FFh
  2916.       with a commandline switch
  2917. SeeAlso: AX=C000h"PCACHE"
  2918. --------V-2FC020-----------------------------
  2919. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  2920.     AX = C020h
  2921. Return: AL = 00h if successful
  2922.         BX = VxD API Status
  2923.         0000h no error
  2924.         0001h error
  2925.         0100h neither Windows 3.X enhanced mode nor
  2926.             Windows/386 2.x is running
  2927.         0200h VM API entry point not found (VxD not installed)
  2928. Notes:    AH=C0h is the default multiplex number; if this is already in use,
  2929.       After Dark will try successive values up to AH=FFh
  2930.     this call resets the VxD API Status to zero
  2931. SeeAlso: AX=1602h,AX=1607h
  2932. Index:    screen saver;AD-DOS
  2933. --------V-2FC04E-----------------------------
  2934. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  2935.     AX = C04Eh
  2936. Return: AL = 4Fh if Explosiv is running but not memory-resident
  2937. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2938.       by H&G Software (Reidar Gresseth and Chris Hook)
  2939. Note:    AH=C0h is the default multiplex number, but may be reconfigured to
  2940.       any value from C0h to C9h
  2941. SeeAlso: AX=C050h
  2942. Index:    screen saver;Explosiv
  2943. --------V-2FC050-----------------------------
  2944. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  2945.     AX = C050h
  2946. Return: AL = 51h if installed
  2947.     ---v3.0+ ---
  2948.         BX = interval in clock ticks
  2949.         CH = animation display color (00h mono, 01h tinge, 02h color)
  2950.         CL = animation delay factor
  2951.         DH = animation parameters
  2952.         DL = INT 10 checking (00h on, 01h off)
  2953.         SI = number of bytes available for animation code
  2954.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  2955. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  2956.       by H&G Software (Reidar Gresseth and Chris Hook)
  2957. Note:    AH=C0h is the default multiplex number, but may be reconfigured to
  2958.       any value from C0h to C9h
  2959. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  2960. SeeAlso: INT 14/AX=AA01h
  2961. Index:    screen saver;Explosiv
  2962. --------V-2FC052-----------------------------
  2963. INT 2F - Explosiv v2.00+ - UNINSTALL
  2964.     AX = C052h
  2965.     DX:BX = address to return to on successful uninstall
  2966. Return: at specified address if successful
  2967.     AL = 53h on error
  2968. Note:    specified return address must have the segment of the caller's PSP
  2969. SeeAlso: AX=C050h
  2970. Index:    screen saver;Explosiv
  2971. --------V-2FC054-----------------------------
  2972. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  2973.     AX = C054h
  2974. Return: AL = delay factor
  2975. SeeAlso: AX=C057h
  2976. Index:    screen saver;Explosiv
  2977. ----------2FC054-----------------------------
  2978. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  2979.     AX = C054h
  2980.     BX = new interval in clock ticks
  2981.     CH = animation display color (00h mono, 01h tinge, 02h color)
  2982.     CL = animation delay factor
  2983.     DH = animation parameters
  2984.     DL = INT 10 checking (00h on, 01h off)
  2985. SeeAlso: AX=C050h
  2986. --------V-2FC055-----------------------------
  2987. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  2988.     AX = C055h
  2989.     BX = new interval in clock ticks
  2990. Index:    screen saver;Explosiv
  2991. --------V-2FC056-----------------------------
  2992. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  2993.     AX = C056h
  2994.     BL = animated display type (00h mono, 01h color)
  2995. SeeAlso: AX=C058h"v2.x"
  2996. Index:    screen saver;Explosiv
  2997. --------V-2FC056-----------------------------
  2998. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  2999.     AX = C056h
  3000.     BX = new state
  3001.         0000h disabled
  3002.         0100h enabled
  3003.         0101h enabled, but never blank
  3004.         0102h enabled, always blank
  3005. --------V-2FC057-----------------------------
  3006. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  3007.     AX = C057h
  3008.     BL = delay factor
  3009. SeeAlso: AX=C054h"v2.x"
  3010. Index:    screen saver;Explosiv
  3011. --------V-2FC058-----------------------------
  3012. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  3013.     AX = C058h
  3014.     BL = animation parameter
  3015. Note:    the animation parameter has different interpretations for each display
  3016. SeeAlso: AX=C056h"v2.x"
  3017. Index:    screen saver;Explosiv
  3018. ----------2FC058-----------------------------
  3019. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  3020.     AX = C058h
  3021.     BX = file handle for file containing display code
  3022.     CX = number of bytes to load
  3023.     DX = offset at which animation code should be loaded
  3024. Return: AL = status
  3025.         00h successful
  3026.         01h code too large to available space
  3027.         02h no data read, load aborted
  3028.         03h incomplete load, default blanking display loaded instead
  3029.         58h unexpected offset in DX
  3030. Note:    if AL=00h-03h on return, the file will be closed
  3031. --------V-2FC059-----------------------------
  3032. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  3033.     AX = C059h
  3034. Note:    clears flag set by AX=C05Ah
  3035. SeeAlso: AX=C05Ah
  3036. Index:    screen saver;Explosiv
  3037. --------V-2FC05A-----------------------------
  3038. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  3039.     AX = C05Ah
  3040.     BL = ???
  3041. Note:    sets flag cleared by AX=C059h then stores BL
  3042. SeeAlso: AX=C059h,AX=C05Bh
  3043. Index:    screen saver;Explosiv
  3044. --------V-2FC05B-----------------------------
  3045. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  3046.     AX = C05Bh
  3047.     BL = animation display
  3048. Note:    this function fails silently if the requested display is not in memory
  3049. SeeAlso: AX=C05Ah,AX=C05Ch
  3050. Index:    screen saver;Explosiv
  3051. --------V-2FC05C-----------------------------
  3052. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  3053.     AX = C05Ch
  3054.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  3055. SeeAlso: AX=C05Bh
  3056. Index:    screen saver;Explosiv
  3057. --------N-2FC100-----------------------------
  3058. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  3059.     AX = C100h
  3060. Return: AL = FFh if installed
  3061.         ES:SI -> signature string "STP-IPX$"
  3062.         BX = version??? (0001h for v1.00)
  3063.         DI corrupted
  3064. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  3065.       multiplex numbers to find a free one, as LSL does
  3066. SeeAlso: AX=C000h"LSL",AX=C101h
  3067. ----------2FC101-----------------------------
  3068. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  3069.     AX = C101h
  3070. Return: AL = status???
  3071.     BX corrupted
  3072. SeeAlso: AX=C101h
  3073. --------d-2FC300DX0000-----------------------
  3074. INT 2F U - SpaceManager - INSTALLATION CHECK
  3075.     AX = C300h
  3076.     DX = 0000h
  3077. Return: AL = FFh if any SpaceManager programs installed
  3078.         BX = 6F73h
  3079.         CX = 6F68h
  3080. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  3081.       Systems, Inc.
  3082. Note:    AH=C3h is the default; SpaceManager programs scan from C3h to FFh for
  3083.       a free multiplex number
  3084. SeeAlso: AX=C300h/DX=0666h
  3085. --------d-2FC300DX0666-----------------------
  3086. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  3087.     AX = C300h
  3088.     DX = 0666h for any SpaceManager prog or program identifier (see below)
  3089.     BX = 4F53h
  3090.     CX = 4F48h
  3091. Return: AL = FFh if BX/CX as specified and specified program installed
  3092.         BX = 6F73h
  3093.         CX = 6F68h
  3094. Notes:    AH=C3h is the default; SpaceManager programs scan from C3h to FFh for
  3095.       a free multiplex number
  3096.     this call is chained if BX,CX, or DX are not as specified above
  3097. SeeAlso: AX=C300h/DX=0000h
  3098.  
  3099. Values for SpaceManager program identifier:
  3100.  9000h    SMOUNT (SuperMount)
  3101.  9001h    SELECTC (SelectCompress)
  3102.  9002h    SUPERX (SuperExchange)
  3103.  9003h    FORTUNE (FortuneTeller)
  3104. --------d-2FC301-----------------------------
  3105. INT 2F U - SpaceManager - ???
  3106.     AX = C301h
  3107.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3108.     ???
  3109. Return: ???
  3110. --------d-2FC302-----------------------------
  3111. INT 2F U - SpaceManager - ENABLE PROGRAM
  3112.     AX = C302h
  3113.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3114. Return: AX destroyed
  3115. SeeAlso: AX=C303h,AX=C306h
  3116. --------d-2FC303-----------------------------
  3117. INT 2F U - SpaceManager - DISABLE PROGRAM
  3118.     AX = C303h
  3119.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3120. Return: AX destroyed
  3121. SeeAlso: AX=C302h,AX=C306h
  3122. --------d-2FC304-----------------------------
  3123. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  3124.     AX = C304h
  3125.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3126. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  3127.     AX destroyed
  3128. --------d-2FC305DX9003-----------------------
  3129. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  3130.     AX = C305h
  3131.     DX = 9003h
  3132. Return: AX destroyed
  3133. --------d-2FC305-----------------------------
  3134. INT 2F U - SpaceManager - ???
  3135.     AX = C305h
  3136.     DX = program identifier (9000h,9001h) (see AX=C300h)
  3137.     ???
  3138. Return: ???
  3139. --------d-2FC306-----------------------------
  3140. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  3141.     AX = C306h
  3142.     DX = program identifier (9000h,9001h,9003h) (see AX=C300h)
  3143. Return: AL = current state (00h disabled, FAh enabled)
  3144.     AH destroyed
  3145. SeeAlso: AX=C302h,AX=C303h
  3146. --------d-2FC307DX9001-----------------------
  3147. INT 2F U - SpaceManager - SELECTC - ???
  3148.     AX = C307h
  3149.     DX = 9001h
  3150.     BX = ???
  3151.     CX = ???
  3152.     ???
  3153. Return: ???
  3154. --------d-2FC308DX9001-----------------------
  3155. INT 2F U - SpaceManager - SELECTC - ???
  3156.     AX = C308h
  3157.     DX = 9001h
  3158.     ???
  3159. Return: ???
  3160. --------d-2FC64CBX5553-----------------------
  3161. INT 2F U - Smart Prompt - INSTALLATION CHECK
  3162.     AX = C64Ch
  3163.     BX = 5553h
  3164. Return: AX = 4CC6h if installed
  3165.     BX = 5355h if installed
  3166. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  3167.       an immediate flush of SmartDrive's (and compatible caches') buffers
  3168.       on returning to the DOS prompt
  3169. --------v-2FC900BP0000-----------------------
  3170. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  3171.     AX = C900h
  3172.     BP = 0000h
  3173. Return: AL = FFh if installed
  3174.         BP >= 0014h
  3175. Note:    called by TBSCANX
  3176. SeeAlso: AX=C987h,AX=CA00h
  3177. --------v-2FC987-----------------------------
  3178. INT 2F U - ThunderByte??? - DISINFECT FILE???
  3179.     AX = C987h
  3180.     BX:DX -> filename
  3181.     BX:CX -> virus name
  3182. Return: AX = status
  3183.         0000h successful???
  3184. Note:    called by TBSCANX
  3185. SeeAlso: AX=CA00h
  3186. --------r-2FC9FF-----------------------------
  3187. INT 2F C - StackMan - INSTALLATION BROADCAST
  3188.     AX = C9FFh
  3189.     BL = BCD version number
  3190.     CX = number of stacks
  3191.     DX = stack size in bytes
  3192. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  3193.       which functions as a replacement for the DOS STACK= command as well
  3194.       as permitting multiple TSRs to share a pool of stack space
  3195. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  3196.       its API is available
  3197.     the installation check consists of testing for the string "STACKXXX" at
  3198.       offset 0Ah from the INT B4 handler
  3199. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  3200. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  3201. --------F-2FCA-------------------------------
  3202. INT 2F - FAXPLUS - FAX TSR
  3203.     AH = CAh
  3204.     ???
  3205. Return: ???
  3206. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  3207.       Veldman
  3208. SeeAlso: AH=2Ah"Gammafax"
  3209. --------v-2FCA00BX5442-----------------------
  3210. INT 2F - TBSCANX - INSTALLATION CHECK
  3211.     AX = CA00h
  3212.     BX = 5442h ('TB')
  3213. Return: AL = 00h not installed
  3214.        = FFh installed
  3215.         BX = 7462h ('tb') if BX was 5442h on entry
  3216. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  3217. Note:    programs may perform virus checks on themselves, other program files,
  3218.       or their data files by invoking the TBSCANX API.
  3219. SeeAlso: AX=4653h,AX=C900h
  3220. --------v-2FCA01-----------------------------
  3221. INT 2F - TBSCANX - GET STATUS
  3222.     AX = CA01h
  3223. Return: AH = BCD version number (v2.2+)
  3224.        = CAh for versions before 2.2
  3225.     AL = state (00h = disabled, 01h = enabled)
  3226.     CX = number of signatures which will be searched
  3227. ---v2.0---
  3228.     BX = EMS handle, 0000h if not using EMS
  3229. ---v2.3+---
  3230.     BX = segment of swap area, 0000h if not swapped
  3231.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  3232. SeeAlso: AX=CA02h
  3233. --------v-2FCA02-----------------------------
  3234. INT 2F - TBSCANX - SET STATE
  3235.     AX = CA02h
  3236.     BL = new state (00h = disabled, 01h = enabled)
  3237. SeeAlso: AX=CA01h
  3238. --------v-2FCA03-----------------------------
  3239. INT 2F - TBSCANX - SCAN BUFFER
  3240.     AX = CA03h
  3241.     CX = size of buffer
  3242.     DS:DX -> buffer containing data to scan
  3243. Return: CF clear if no virus signatures found
  3244.         BX,ES destroyed
  3245.     CF set if signature found
  3246.         ES:BX -> ASCIZ virus name (v2.3+)
  3247.         DS:DX -> ASCIZ virus name (v2.0)
  3248.     AX,CX,DX destroyed (v2.3+)
  3249.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  3250. SeeAlso: AX=CA04h
  3251. --------v-2FCA04-----------------------------
  3252. INT 2F - TBSCANX - SCAN FILE
  3253.     AX = CA04h
  3254.     DS:DX -> filename
  3255. Return: CF clear if no virus signatures found
  3256.         BX,ES destroyed
  3257.     CF set if signature found
  3258.         ES:BX -> ASCIZ virus name
  3259.     AX,CX,DX destroyed
  3260. Note:    this function requires at least 4K free memory
  3261. SeeAlso: AX=CA03h
  3262. --------U-2FCAFEBX0000-----------------------
  3263. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  3264.     AX = CAFEh
  3265.     BX = 0000h
  3266. Return: BX = segment of resident code if installed
  3267.        = 0000h if not installed
  3268. SeeAlso: AX=5453h,INT 2D"AMIS"
  3269. --------F-2FCB00-----------------------------
  3270. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  3271.     AX = CB00h
  3272. Return: AL = status
  3273.         00h not installed, OK to install
  3274.         01h not installed, not OK to install
  3275.         FFh installed
  3276. Note:    AH = CBh is the default identifier, but may be reconfigured
  3277. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  3278. --------F-2FCB00BX4D53-----------------------
  3279. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  3280.     AX = CB00h
  3281.     BX = 4D53h ('MS')
  3282.     CX = 4949h ('II')
  3283. Return: AL = status
  3284.         00h not installed, OK to install
  3285.         01h not installed, not OK to install
  3286.         FFh installed
  3287.         BX = 6D73h ('ms')
  3288.         CX = 6969h ('ii')
  3289. Note:    this function is equivalent to the standard CASMGR installation check,
  3290.       but uses the additional magic values to identify which CAS is
  3291.       installed
  3292. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  3293. --------F-2FCB01-----------------------------
  3294. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  3295.     AX = CB01h
  3296.     DS:DX -> ASCIZ name of task control file
  3297. Return: AX >= 0: event handle
  3298.     AX < 0: error code
  3299. Note:    files needed for an event must be kept until task is complete or error
  3300. SeeAlso: AX=CB0Bh,AX=CB15h
  3301.  
  3302. Error codes (AH = class, AL = subcode, value passed back is 2's complement):
  3303.   Class 00h    --- FAX warnings
  3304.     Subcode 00h    no error
  3305.         02h    bad scanline count
  3306.         03h    page sent with errors, could not retransmit
  3307.         04h    received data lost
  3308.         05h    invalid or missing logo file
  3309.         06h    filename does not match nonstandard format (NSF) header
  3310.         07h    file size does not match NSF header
  3311.   Class 01h    --- DOS warnings (data was sent)
  3312.     Subcode 01h    invalid function
  3313.         05h    access denied
  3314.         06h    invalid handle
  3315.         others    see INT 21/AH=59h
  3316.   Class 02h    --- fatal errors (data not sent)
  3317.     Subcode 00h    multiplex handler failed
  3318.         01h    unknown command
  3319.         02h    bad event handle
  3320.         03h    FIND NEXT attempted before FIND FIRST
  3321.         04h    no more events
  3322.         07h    invalid queue type
  3323.         08h    bad control file
  3324.         09h    communication board busy
  3325.         0Ah    invalid command parameter
  3326.         0Bh    can't uninstall resident code
  3327.         0Ch    file exists
  3328.         80h    unknown task type
  3329.         81h    bad phone number
  3330.         82h    bad .PCX file header
  3331.         83h    unexpected EOF
  3332.         84h    unexpected disconnect
  3333.         85h    too many dialing retries
  3334.         86h    no file specified for send
  3335.         87h    communication board timeout
  3336.         88h    received too many pages (>1023) of data
  3337.         89h    manual connect initiated too long ago
  3338.         8Ah    hardware command set error
  3339.         8Bh    bad NonStandard Format (NSF) header file
  3340.   Class 03h    --- fatal DOS errors
  3341.     Subcode 02h    file not found
  3342.         03h    path not found
  3343.         others    see INT 21/AH=59h
  3344.   Class 04h    --- FAX errors
  3345.     Subcode 01h    remote unit not Group 3 compatible
  3346.         02h    remote unit did not send capabilities
  3347.         03h    other FAX machine incompatible
  3348.         04h    other FAX incapable of file transfers
  3349.         05h    exceeded retrain or FAX resend limit
  3350.         06h    line noise or failure to agree on bit rate
  3351.         07h    remote disconnected after receiving data
  3352.         08h    no response from remote after sending data
  3353.         09h    remote's capabilities incompatible
  3354.         0Ah    no dial tone (v1.2+)
  3355.         0Bh    invalid response from remote unit after sending data
  3356.         0Dh    phone line dead or remote unit disconnected
  3357.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  3358.         11h    invalid command from remote after receiving data
  3359.         15h    tried to receive from incompatible hardware
  3360.         5Ch    received data overflowed input buffer
  3361.         5Dh    remote unexpectedly stopped sending data
  3362.         5Eh    other FAX machine jammed (no data sent)
  3363.         5Fh    remote took too long to send fax scan line
  3364.         63h    can't get through to remote unit
  3365.         64h    user canceled event
  3366.   Class 05h    --- application-specific (v1.2+)
  3367.   ---Intel FAXPOP.EXE
  3368.     Subcode 00h    tried to send while in graphics mode
  3369.         01h    insufficient disk space
  3370.         02h    internal buffer overflow
  3371.   Class 06h    --- CAS implementation-specific (v1.2+)
  3372. --------F-2FCB02-----------------------------
  3373. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  3374.     AX = CB02h
  3375. Return: AX >= 0: event handle of aborted event
  3376.     AX < 0: error code (see AX=CB01h)
  3377. Note:    termination could take up to 30 seconds
  3378. SeeAlso: AX=CB08h,AX=CB10h
  3379. --------F-2FCB05-----------------------------
  3380. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  3381.     AX = CB05h
  3382.     CX = status of events to find
  3383.         0000h successful completion
  3384.         0001h waiting to be processed
  3385.         0002h number has been dialed
  3386.         0003h connection established, sending
  3387.         0004h connection established, receiving
  3388.         0005h event aborted
  3389.         FFFFh find any event, regardless of status
  3390.         other negative values, match error code
  3391.     DH = direction
  3392.         00h chronological order, earliest to latest
  3393.         01h reverse chronological order, latest to earliest
  3394.     DL = queue to search
  3395.         00h task queue
  3396.         01h receive queue
  3397.         02h log queue
  3398. Return: AX = 0000h successful
  3399.         BX = event handle for found event
  3400.     AX < 0       error code (see AX=CB01h)
  3401. SeeAlso: AX=CB06h,AX=CB07h
  3402. --------F-2FCB06-----------------------------
  3403. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  3404.     AX = CB06h
  3405.     DL = queue to search
  3406.         00h task queue
  3407.         01h receive queue
  3408.         02h log queue
  3409. Return: AX = 0000h successful
  3410.         BX = event handle for found event
  3411.     AX < 0       error code (see AX=CB01h)
  3412. Note:    direction of search is same as preceding FIND FIRST call
  3413. SeeAlso: AX=CB05h
  3414. --------F-2FCB07-----------------------------
  3415. INT 2F - Communicating Applications Specification - OPEN FILE
  3416.     AX = CB07h
  3417.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  3418.     CX = receive file number (ignored for task queue and log queue)
  3419.         0000h  open receive control file
  3420.         N       open Nth received data file
  3421.     DL = queue
  3422.         00h task queue
  3423.         01h receive queue control file or received file, as given by CX
  3424.         02h log queue
  3425.         03h group file in task queue (v1.2+)
  3426.         04h group file in log queue (v1.2+)
  3427. Return: AX = 0000h successful
  3428.         BX = DOS file handle for requested file
  3429.     AX < 0       error code (see AX=CB01h)
  3430. Note:    the returned file handle has been opened in read-only mode and should
  3431.       be closed with INT 21/AH=3Eh after use
  3432. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  3433. --------F-2FCB08-----------------------------
  3434. INT 2F - Communicating Applications Specification - DELETE FILE
  3435.     AX = CB08h
  3436.     BX = event handle
  3437.     CX = receive file number
  3438.         0000h delete ALL received files and receive control file
  3439.         N      delete Nth received file
  3440.     DL = queue
  3441.         00h delete control file in task queue and corresponding group file
  3442.         if it exists
  3443.         01h delete file in receive queue, as given by CX
  3444.         02h delete control file in log queue (individual deletions not
  3445.         recommended, to maintain integrity of log) and corresponding
  3446.         group file if it exists
  3447. Return: AX = 0000h successful
  3448.     AX < 0       error code (see AX=CB01h)\
  3449. SeeAlso: AX=CB02h,AX=CB09h
  3450. --------F-2FCB09-----------------------------
  3451. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  3452.     AX = CB09h
  3453.     DL = queue
  3454.         00h delete all control files in task queue, including all group
  3455.         files
  3456.         01h delete all files in receive queue
  3457.         02h delete all control files in log queue, including all group
  3458.         files
  3459. Return: AX = 0000h successful
  3460.     AX < 0       error code (see AX=CB01h)
  3461. SeeAlso: AX=CB08h
  3462. --------F-2FCB0A-----------------------------
  3463. INT 2F - Communicating Applications Specification - GET EVENT DATE
  3464.     AX = CB0Ah
  3465.     BX = event handle
  3466.     DL = queue
  3467.         00h task queue
  3468.         01h receive queue
  3469.         02h log queue
  3470. Return: AX = 0000h successful
  3471.         CX = year
  3472.         DH = month
  3473.         DL = day
  3474.     AX < 0       error code (see AX=CB01h)
  3475. SeeAlso: AX=CB0Bh,AX=CB0Ch
  3476. --------F-2FCB0B-----------------------------
  3477. INT 2F - Communicating Applications Specification - SET TASK DATE
  3478.     AX = CB0Bh
  3479.     BX = event handle (task event only)
  3480.     CX = year
  3481.     DH = month
  3482.     DL = day
  3483. Return: AX = 0000h successful
  3484.     AX < 0       error code (see AX=CB01h)
  3485. Note:    setting a task's date and time to before the current date and time
  3486.       causes it to execute immediately
  3487. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  3488. --------F-2FCB0C-----------------------------
  3489. INT 2F - Communicating Applications Specification - GET EVENT TIME
  3490.     AX = CB0Ch
  3491.     BX = event handle
  3492.     DL = queue
  3493.         00h task queue
  3494.         01h receive queue
  3495.         02h log queue
  3496. Return: AX = 0000h successful
  3497.         CH = hour
  3498.         CL = minute
  3499.         DH = second
  3500.         DL = 00h
  3501.     AX < 0       error code (see AX=CB01h)
  3502. SeeAlso: AX=CB0Ah,AX=CB0Dh
  3503. --------F-2FCB0D-----------------------------
  3504. INT 2F - Communicating Applications Specification - SET TASK TIME
  3505.     AX = CB0Dh
  3506.     BX = event handle (task events only)
  3507.     CH = hour
  3508.     CL = minute
  3509.     DH = second
  3510.     DL unused
  3511. Return: AX = 0000h successful
  3512.     AX < 0       error code (see AX=CB01h)
  3513. Note:    setting a task's date and time to before the current date and time
  3514.       causes it to execute immediately
  3515. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  3516. --------F-2FCB0E-----------------------------
  3517. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  3518.     AX = CB0Eh
  3519.     DS:DX -> 256-byte buffer
  3520. Return: AX = 0000h successful
  3521.         buffer filled
  3522.     AX < 0       error code (see AX=CB01h)
  3523.  
  3524. Format of external data block:
  3525. Offset    Size    Description
  3526.  00h    BYTE    CAS major version
  3527.  01h    BYTE    CAS minor version
  3528.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  3529.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  3530.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  3531.  60h 32 BYTEs    ASCIZ default sender name
  3532.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  3533.  95h 107 BYTEs    reserved
  3534. --------F-2FCB0F-----------------------------
  3535. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  3536.     AX = CB0Fh
  3537.     DL = subfunction
  3538.         00h get current autoreceive state
  3539.         01h set autoreceive state
  3540.         DH = number of rings before answer, 00h = never
  3541. Return: AX = 0000h autoreceive disabled
  3542.     AX = N       number of rings before answer
  3543.     AX < 0       error code (see AX=CB01h)
  3544. --------F-2FCB10-----------------------------
  3545. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  3546.     AX = CB10h
  3547.     DS:DX -> 512-byte buffer
  3548. Return: AX = 0000h successful
  3549.         BX = event handle of current event or negative error code if
  3550.             no current event
  3551.         buffer filled
  3552.     AX < 0       error code (see AX=CB01h)
  3553. SeeAlso: AX=CB02h,AX=CB0Dh
  3554.  
  3555. Format of status area:
  3556. Offset    Size    Description
  3557.  00h    BYTE    event type
  3558.         00h send
  3559.         01h receive
  3560.         02h polled send
  3561.         03h polled receive
  3562.         04h to 7Fh reserved
  3563.         FFh serious hardware error
  3564.  01h    BYTE    transfer type
  3565.         00h 200x200 dpi, FAX mode
  3566.         01h 100x200 dpi, FAX mode
  3567.         02h file transfer mode
  3568.         03h to 7Fh reserved
  3569.  02h    WORD    event status
  3570.         0000h completed successfully
  3571.         0001h waiting
  3572.         0002h number dialed
  3573.         0003h connected, sending
  3574.         0004h connected, receiving
  3575.         0005h aborted
  3576.         0006h to 007Fh reserved
  3577.         0080h to 7FFFh application-specific events
  3578.         8000h to FFFFh error codes
  3579.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  3580.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  3581.  08h    WORD    number of files to transfer, max 7FFFh
  3582.  0Ah    WORD    offset of file transfer record
  3583.  0Ch 47 BYTEs    ASCIZ phone number to call
  3584.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  3585.  7Bh    BYTE    reserved (00h)
  3586.  7Ch    BYTE    connect time, seconds
  3587.  7Dh    BYTE    connect time, minutes
  3588.  7Eh    BYTE    connect time, hours
  3589.  7Fh    DWORD    total number of pages in all files
  3590.  83h    DWORD    pages already transmitted
  3591.  87h    WORD    number of files already transmitted
  3592.  89h    BYTE    cover page flag
  3593.         00h don't transmit cover page
  3594.         01h transmit cover page
  3595.         02h to 7Fh reserved
  3596.  8Ah    WORD    total number of transmission errors
  3597.  8Ch 78 BYTEs    reserved (zeros)
  3598.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  3599.  EFH 32 BYTEs    ASCIZ destination name
  3600. 10Fh 32 BYTEs    ASCIZ sender name
  3601. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  3602. 17Fh 128 BYTEs    file transfer record for current event (see below)
  3603.  
  3604. Format of file transfer record:
  3605. Offset    Size    Description
  3606.  00h    BYTE    file type (ignored unless FAX)
  3607.         00h ASCII
  3608.         01h PCX
  3609.         02h DCX
  3610.         03h to 7Fh reserved
  3611.  01h    BYTE    text size for ASCII FAX file
  3612.         00h = 80 columns by 66 lines (11 inches)
  3613.         01h = 132 columns by 88 lines (11 inches)
  3614.         02h to 7Fh reserved
  3615.  02h    BYTE    status of file
  3616.         00h untouched
  3617.         01h opened
  3618.         02h moved
  3619.         03h deleted
  3620.         04h not yet received
  3621.         05h to 7Fh reserved
  3622.  03h    DWORD    bytes already transmitted
  3623.  07h    DWORD    file size in bytes
  3624.  0Bh    WORD    pages alread transmitted
  3625.  0Dh    WORD    number of pages in file
  3626.  0Fh 80 BYTEs    ASCIZ filename
  3627.  5Fh    BYTE    1/8 inch page length
  3628.         if page length below set to 01h through 7Fh, this value
  3629.         specifies additional 1/8 inch increments to page length
  3630.  60h    BYTE    page length
  3631.         00h = 11 inches
  3632.         01h to 7Fh = page length is this number of inches plus value of
  3633.             1/8 inch field above
  3634.         80h to FEh reserved
  3635.         FFh = ASCII pages ending with formfeed
  3636.  61h 31 BYTEs    reserved (zeros)
  3637. --------F-2FCB11-----------------------------
  3638. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  3639.     AX = CB11h
  3640.     DL = queue to get status of
  3641.         00h task queue
  3642.         01h receive queue
  3643.         02h log queue
  3644.         03h send events (v1.2+)
  3645.         04h receive events (v1.2+)
  3646. Return: AX >= 0     total number of changes made to queue, modulo 32768
  3647.         BX = number of control files currently in queue
  3648.         CX = number of received files (zero for task and log queues)
  3649.     AX < 0    error code (see AX=CB01h)
  3650. SeeAlso: AX=CB12h
  3651. --------F-2FCB11DL03-------------------------
  3652. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  3653.     AX = CB11h
  3654.     DL = 03h
  3655. Return: AX = number of successful sends since resident manager started
  3656.     BX = number of unsuccessful sends, including warnings
  3657. SeeAlso: AX=CB11h/DL=04h
  3658. --------F-2FCB11DL04-------------------------
  3659. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  3660.     AX = CB11h
  3661.     DL = 04h
  3662. Return: AX = number of received file events since resident manager started
  3663.     BX = number of received FAX events
  3664. SeeAlso: AX=CB11h/DL=03h
  3665. --------F-2FCB12-----------------------------
  3666. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  3667.     AX = CB12h
  3668.     DS:DX -> 128-byte status buffer (see below)
  3669. Return: AX = 0000h successful
  3670.         buffer filled with hardware-dependent status information
  3671.        < 0       error code (see AX=CB01h)
  3672. SeeAlso: AX=CB10h,AX=CB11h
  3673.  
  3674. Format of status buffer for Intel Connection CoProcessor:
  3675. Offset    Size    Description
  3676.  00h    BYTE    Connection CoProcessor connection status flags (see below)
  3677.  01h    BYTE    number of kilobytes of free buffer space
  3678.  02h    BYTE    page buffer status
  3679.         bit 7: Connection CoProcessor has documents to send
  3680.         bits 6-0: number of pages in buffer
  3681.  03h    BYTE    number of retries left for dialing number
  3682.  04h    BYTE    page number to retransmit
  3683.  05h    BYTE    communications status (see below)
  3684.  06h    BYTE    baud rate (see below)
  3685.  07h  3 BYTEs    reserved
  3686.  0Ah    BYTE    Connection CoProcessor hardware status (see below)
  3687.  0Bh    BYTE    Connection CoProcessor switch states (see below)
  3688.  0Ch    BYTE    communications flags (see below)
  3689.  0Dh    BYTE    reserved
  3690.  0Eh    WORD    error count (only valid while busy, reset when idle)
  3691.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  3692.  14h    BYTE    'A' if Connection CoProcessor board present
  3693.  15h  9 BYTEs    reserved
  3694.  1Eh 21 BYTEs    ASCIZ CCITT identification
  3695.  33h 77 BYTEs    reserved
  3696. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3697.       by examining the byte at offset 14h
  3698.  
  3699. Bitfields for Connection CoProcessor baud rate:
  3700. Bit(s)    Description
  3701.  7    reserved
  3702.  6-4    baud rate
  3703.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  3704.     100 = 2400 baud (V.27 ter)
  3705.     101 = 4800 baud (V.27 ter)
  3706.     110 = 7200 baud (V.29)
  3707.     111 = 9600 baud (V.29)
  3708.  3-0    reserved, should be 0110
  3709.  
  3710. Format of status buffer for Intel SatisFAXtion board:
  3711. Offset    Size    Description
  3712.  00h    BYTE    SatisFAXtion connection status flags (see below)
  3713.  01h    BYTE    SatisFAXtion board state (see below)
  3714.  02h    BYTE    number of KB free in buffer
  3715.  03h    BYTE    number of pages or files in buffer
  3716.  04h    BYTE    number of redials remaining on current number
  3717.  05h    BYTE    FAX page number to retransmit
  3718.  06h    BYTE    current page/file in block transfer
  3719.  07h    BYTE    number of rings received (only if auto-answer enabled)
  3720.  08h    WORD    error count
  3721.  0Ah    DWORD    length of file being transferred
  3722.  0Eh  6 BYTEs    reserved
  3723.  14h    BYTE    'B' if SatisFAXtion board present
  3724.  15h 13 BYTEs    ASCIZ transfer agent name
  3725.  22h  5 BYTEs    ASCIZ transfer agent version number
  3726.  27h 13 BYTEs    ASCIZ resident loader name
  3727.  34h  5 BYTEs    ASCIZ resident loader version number
  3728.  39h 21 BYTEs    ASCIZ remote CSID
  3729.  4Eh 13 BYTEs    ASCIZ resident manager name
  3730.  5Bh  5 BYTEs    ASCIZ resident manager version number
  3731.  60h 32 BYTEs    reserved
  3732. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  3733.       by examining the byte at offset 14h
  3734.  
  3735. Bitfields for Connection CoProcessor connection status flags:
  3736. Bit(s)    Description
  3737.  7    hardware busy sending or receiving
  3738.  6    last page of data
  3739.  5    no data on current page
  3740.  4    retransmit request for current page being transmitted
  3741.  3    NSF (nonstandard file) mode active
  3742.  2-0    reserved
  3743.  
  3744. Bitfields for communications status:
  3745. Bit(s)    Description
  3746.  7    originating call
  3747.  6    FAX message to be sent
  3748.  5    on line
  3749.  4    ring detected and receive enabled
  3750.  3    buffer dumped on receive
  3751.  2-0    hardware sequence state
  3752.         000 idle
  3753.         001 dial
  3754.         010 answer
  3755.         011 transmit
  3756.         100 receive
  3757.         101 pre-message
  3758.         110 post-message
  3759.         111 disconnect
  3760.  
  3761. Bitfields for Connection CoProcessor hardware status:
  3762. Bit(s)    Description
  3763.  7    modem option installed
  3764.  6    Connection CoProcessor has control of DAA (not latched)
  3765.  5    on line (not latched)
  3766.  4    ring detected (not latched)
  3767.  3    data in command buffer (not latched)
  3768.  2    set if using DMA channel 1, clear if using DMA channel 3
  3769.  1    line length compensation 1 set (not latched)
  3770.  0    line length compensation 0 set (not latched)
  3771.  
  3772. Bitfields for Connection CoProcessor switch states:
  3773. Bit(s)    Description
  3774.  7    reserved
  3775.  6    unused
  3776.  5    spare switch open
  3777.  4    FAX ADR1 switch open
  3778.  3    FAX ADR0 switch open
  3779.  2    alternate interrupt switch open
  3780.  1    COM SEL 1 switch open
  3781.  0    COM SEL 0 switch open
  3782. Note:    valid combinations of 0-2 are
  3783.     000  COM2 IRQ3 IObase 2F8h
  3784.     001  COM1 IRQ4 IObase 3F8h
  3785.     010  COM4 IRQ3 IObase 2E8h
  3786.     011  COM3 IRQ4 IObase 3E8h
  3787.     110  COM4 IRQ2 IObase 2E8h
  3788.     111  COM3 IRQ5 IObase 3E8h
  3789.  
  3790. Bitfields for communications flags:
  3791. Bit(s)    Description
  3792.  7    reserved
  3793.  6    auxiliary relay forced ON
  3794.  5    modem select relay forced ON
  3795.  4    offhook relay forced ON
  3796.  3    9600 bps enabled
  3797.  2    7200 bps enabled
  3798.  1    4800 bps enabled
  3799.  0    2400 bps enabled
  3800.  
  3801. Bitfields for SatisFAXtion connection status flags:
  3802. Bit(s)    Description
  3803.  7    busy in T.30 CCITT fax protocol
  3804.  6    data on current page/file (only used for block xfers)
  3805.  5    retransmission of last page requested
  3806.  4    in file transfer mode
  3807.  3    data in buffer
  3808.  2    data buffer dumped on receive
  3809.  1    200x100 dpi resolution instead of 200x200 dpi
  3810.  0    data modem in use, FAX image modem not available
  3811.  
  3812. Bitfields for SatisFAXtion board state:
  3813. Bit(s)    Description
  3814.  7    reserved
  3815.  6    handset jack active, data and FAX modems not available
  3816.  5-3    current rate
  3817.     000     300 bps (V.21 HDLC)
  3818.     100 2400 bps (V.27 ter)
  3819.     101 4800 bps (V.27 ter)
  3820.     110 7200 bps (V.29)
  3821.     111 9600 bps (V.29)
  3822.  2-0    T.30 CCITT protocol state
  3823.     000 idle
  3824.     001 dialing
  3825.     010 answering
  3826.     011 transmitting
  3827.     100 receiving
  3828.     101 pre-message
  3829.     110 post-message
  3830.     111 disconnect
  3831. --------F-2FCB13DL00-------------------------
  3832. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  3833.     AX = CB13h
  3834.     DL = 00h
  3835. Return: AX = 0040h in progress
  3836.        >= 0       passed
  3837.        < 0       hardware-dependent failure code (see below)
  3838. SeeAlso: AX=CB13h/DL=01h
  3839.  
  3840. Intel Connection CoProcessor failure codes:
  3841.  bit 3    9600 bps FAX modem module failed
  3842.  bit 2    SDLC chip failed
  3843.  bit 1    RAM failed
  3844.  bit 0    ROM checksum failed
  3845.  
  3846. Intel SatisFAXtion failure codes:
  3847.  bit 1    2400 bps data modem failed
  3848.  bit 0    9600 bps FAX modem failed
  3849. --------F-2FCB13DL01-------------------------
  3850. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  3851.     AX = CB13h
  3852.     DL = 01h
  3853. Return: AX = 0000h successfully started
  3854.        < 0       error code (see AX=CB01h)
  3855. SeeAlso: AX=CB13h/DL=00h
  3856. --------F-2FCB14-----------------------------
  3857. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  3858.     AX = CB14h
  3859.     BX = event handle
  3860.     CX = receive file number
  3861.          0001h first received file
  3862.          N       Nth received file
  3863.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  3864. Return: AX = 0000h successful
  3865.        < 0       error code (see AX=CB01h)
  3866. --------F-2FCB15-----------------------------
  3867. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  3868.     AX = CB15h
  3869.     DS:DX -> variable-length data area (see below)
  3870. Return: AX >= 0 event handle
  3871.        < 0    error code (see AX=CB01h)
  3872. SeeAlso: AX=CB01h
  3873.  
  3874. Format of data area:
  3875. Offset    Size    Description
  3876.  00h    BYTE    transfer type
  3877.         00h = 200x200 dpi, fax mode
  3878.         01h = 100x200 dpi, fax mode
  3879.         02h = file transfer mode
  3880.         03h to 7Fh reserved
  3881.  01h    BYTE    text size
  3882.         00h = 80 columns
  3883.         01h = 132 columns
  3884.         02h to 7Fh reserved
  3885.  02h    WORD    time to send (DOS packed time format, see INT 21/AX=5700h)
  3886.  04h    WORD    date to send (DOS packed date format, see INT 21/AX=5700h)
  3887.  06h 32 BYTEs    ASCIZ destination name
  3888.  26h 80 BYTEs    ASCIZ name of file to send
  3889.  76h 47 BYTEs    ASCIZ phone number to dial
  3890.  A5h 64 BYTEs    ASCIZ application-specific tag string
  3891.  E5h    BYTE    reserved (00h)
  3892.  E6h    BYTE    cover page
  3893.         00h don't send cover page
  3894.         01h send cover page
  3895.         02h to 7Fh reserved
  3896.  E7h 23 BYTEs    reserved (zeros)
  3897.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  3898.         set to 01h)
  3899. --------F-2FCB16BX1234-----------------------
  3900. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  3901.     AX = CB16h
  3902.     BX = 1234h
  3903.     CX = 5678h
  3904.     DX = 9ABCh
  3905. Return: AX = 0000h successful
  3906.        < 0       error code
  3907. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  3908. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  3909. Index:    uninstall;CAS Manager
  3910. --------F-2FCB17-----------------------------
  3911. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  3912.     AX = CB17h
  3913.     BX = event handle
  3914.     CL = cover page status
  3915.         00h not read
  3916.         01h read by user
  3917. Return: AX = 0000h successful
  3918.        < 0       error code
  3919. --------F-2FCB80-----------------------------
  3920. INT 2F - Intel SatisFAXtion CASMGR - ???
  3921.     AX = CB80h
  3922.     ???
  3923. Return: ???
  3924. --------F-2FCB81-----------------------------
  3925. INT 2F - Intel SatisFAXtion CASMGR - ???
  3926.     AX = CB81h
  3927.     ???
  3928. Return: ???
  3929. --------F-2FCB82-----------------------------
  3930. INT 2F - Intel SatisFAXtion CASMGR - ???
  3931.     AX = CB82h
  3932.     ???
  3933. Return: ???
  3934. --------F-2FCBDCBL56-------------------------
  3935. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  3936.     AX = CBDCh
  3937.     BL = 56h
  3938.     BH = line number (starts with 1)
  3939.     CX:DX -> 32-byte status buffer or 80 character string
  3940. Return: AX = number of cards installed, or FFFFh on error
  3941. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  3942.       performance multi-card FAX solution for OEMs.
  3943. Note:    defaults to AH=CBh but can be changed
  3944. SeeAlso: AX=CBDDh,AX=DA00h
  3945. --------F-2FCBDDBL56-------------------------
  3946. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  3947.     AX = CBDDh
  3948.     BL = 56h
  3949.     BH = ?
  3950.     CX:DX -> command to execute
  3951. Return: AX = status
  3952.         0000h success
  3953.         FFFFh on error
  3954. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  3955. --------c-2FCC--SI5453-----------------------
  3956. INT 2F U - PC-Kwik Programs - API
  3957.     AH = CCh
  3958.     SI = 5453h or 7473h
  3959.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  3960.     DL = program identifier
  3961.         00h all installed PowerPak programs
  3962.         01h SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  3963.         02h PCKSPL (print spooler)
  3964.         04h PCKSCRN (screen accelerator)
  3965.         05h PCKKEY (keyboard enhancer)
  3966.         06h PCKRAMD (RAM disk)
  3967.         08h PCKWIK.SYS
  3968.         10h PCKCDROM (CD-ROM support for SUPERPCK)
  3969. Return: SI = 7473h
  3970.     other registers vary by function
  3971. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  3972.       thus supports this call
  3973. SeeAlso: INT 21/AH=2Bh/CX=4358h
  3974. ----------2FCD00-----------------------------
  3975. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  3976.     AX = CD00h
  3977. Return: AL = 00h not installed, OK to install
  3978.          01h not installed, not OK to install
  3979.          FFh installed
  3980. SeeAlso: AX=CD02h"Image"
  3981. --------P-2FCD00-----------------------------
  3982. INT 2F - LaserPort Interface - INSTALLATION CHECK
  3983.     AX = CD00h
  3984. Return: AL = status
  3985.         FFh installed
  3986. SeeAlso: AX=CD0Fh"LaserPort"
  3987. --------U-2FCD00-----------------------------
  3988. INT 2F - SWELL.EXE - INSTALLATION CHECK
  3989.     AX = CD00h
  3990. Return: AX = 00FFh installed
  3991.         BH = major version
  3992.         BL = minor version
  3993. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  3994.       process with INT 21/AH=4Bh
  3995. ----------2FCD01-----------------------------
  3996. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  3997.     AX = CD01h
  3998.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  3999. Return: AL = 00h successful
  4000.         CX:BX -> internal character device name
  4001.        = 80h error
  4002. --------U-2FCD01-----------------------------
  4003. INT 2F - SWELL.EXE - SUSPEND ONCE
  4004.     AX = CD01h
  4005. Return: AX = 0000h
  4006. SeeAlso: AX=CD02h"SWELL"
  4007. ----------2FCD02-----------------------------
  4008. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  4009.     AX = CD02h
  4010. Return: AL = 00h/01h successful
  4011.         BH = major version number (BCD)
  4012.         BL = minor version number (BCD)
  4013.        = 80h error
  4014. Note:    if return AL = 01h, the IPI supports network redirection
  4015. SeeAlso: AX=CD00h"Image"
  4016. --------U-2FCD02-----------------------------
  4017. INT 2F - SWELL.EXE - SUSPEND
  4018.     AX = CD02h
  4019. Return: AX = 0000h
  4020. SeeAlso: AX=CD03h"SWELL"
  4021. ----------2FCD03-----------------------------
  4022. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  4023.     AX = CD03h
  4024.     BX = scan line
  4025.     CX = requested density in dots per inch (300, 600, or 1200)
  4026. Return: AL = 00h successful
  4027.         CX = density at which scan line was mapped
  4028.         ES:DI -> start of scan line
  4029.     AL = 80h unsuccessful
  4030.        = 81h scan line out of range
  4031.        = 82h unsupported scan line density
  4032.        = 83h out of memory
  4033. SeeAlso: AX=CD04h"Image"
  4034. --------U-2FCD03-----------------------------
  4035. INT 2F - SWELL.EXE - ACTIVATE
  4036.     AX = CD03h
  4037. Return: AX = 0000h
  4038. SeeAlso: AX=CD02h"SWELL"
  4039. ----------2FCD04-----------------------------
  4040. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  4041.     AX = CD04h
  4042.     CX:BX -> structure (see below)
  4043. Return: AL = 00h successful
  4044.        = 80h unsuccessful
  4045.        = 81h scan line out of range
  4046.        = 82h unsupported scan line density
  4047.        = 83h out of memory
  4048.        = 84h unrecognized source
  4049.        = 85h initialization error
  4050. SeeAlso: AX=CD03h"Image"
  4051.  
  4052. Format of structure:
  4053. Offset    Size    Description
  4054.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4055.  02h    DWORD    pointer to image data
  4056.  06h    WORD    scan line on which to place
  4057.  08h    WORD    bit offset from start of scan line at which to place
  4058.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  4059.  0Ch    WORD    width in bits of data
  4060.  0Eh    WORD    source logical page number
  4061.  10h    WORD    source handle (only if source in expanded memory)
  4062.  12h    WORD    source offset (only if source in expanded memory)
  4063. --------U-2FCD04-----------------------------
  4064. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  4065.     AX = CD04h
  4066. Return: AX = 0000h
  4067. SeeAlso: AX=CD05h"SWELL"
  4068. ----------2FCD05-----------------------------
  4069. INT 2F - Intel Image Processing Interface - PRINT PAGE
  4070.     AX = CD05h
  4071. Return: AL = 00h successful
  4072.        = 80h unsuccessful
  4073. Note:    page image is retained, so multiple calls will print multiple copies of
  4074.       the page
  4075. SeeAlso: AX=CD06h"Image"
  4076. --------U-2FCD05-----------------------------
  4077. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  4078.     AX = CD05h
  4079. Return: AX = 0000h
  4080. SeeAlso: AX=CD04h"SWELL"
  4081. ----------2FCD06-----------------------------
  4082. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  4083.     AX = CD06h
  4084. Return: AL = 00h successful
  4085.        = 80h unsuccessful
  4086. Note:    palette is reset to default
  4087. SeeAlso: AX=CD09h"Image"
  4088. --------U-2FCD06-----------------------------
  4089. INT 2F - SWELL.EXE - UNINSTALL
  4090.     AX = CD06h
  4091. Return: AX = 0000h uninstalled
  4092.        = 8002h programs still swapped, not uninstalled
  4093. ----------2FCD07-----------------------------
  4094. INT 2F - Intel Image Processing Interface - reserved
  4095.     AX = CD07h
  4096. --------U-2FCD07-----------------------------
  4097. INT 2F - SWELL.EXE - GET INFO
  4098.     AX = CD07h
  4099.     ES:BX -> 32-byte buffer for info
  4100. Return: AX = 0000h successful
  4101.         ES:BX buffer filled
  4102.        = 8001h buffer wrong size
  4103.  
  4104. Format of info buffer:
  4105. Offset    Size    Description
  4106.  00h    WORD    20h  (total size of buffer)
  4107.  02h    BYTE    suspend-once mode active if nonzero
  4108.  03h    BYTE    00h active, 01h suspended
  4109.  04h    BYTE    00h quiet, 01h verbose
  4110.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  4111.  06h 26 BYTEs    unused???
  4112. ----------2FCD08-----------------------------
  4113. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  4114.     AX = CD08h
  4115.     CX:BX -> structure (see below)
  4116. Return: AL = 00h successful
  4117.        = 80h unsuccessful
  4118.        = 81h scan line out of range
  4119.        = 82h unsupported scan line density
  4120.        = 83h out of memory
  4121.        = 84h unrecognized source
  4122.        = 85h initialization error
  4123. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  4124.  
  4125. Format of structure:
  4126. Offset    Size    Description
  4127.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  4128.  02h    DWORD    pointer to image data
  4129.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  4130.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  4131.  0Ah    WORD    left cropping (currently must be zero)
  4132.  0Ch    WORD    top cropping (currently must be zero)
  4133.  0Eh    WORD    width (currently must be 8000h)
  4134.  10h    WORD    height (currently must be 8000h)
  4135.  12h    WORD    horizontal size of image in 1200 dpi units
  4136.  14h    WORD    vertical size of image in 1200 dpi units
  4137.  16h    WORD    aspect ratio (currently reserved)
  4138.  18h    WORD    initialization flag (if 01h, initialization is performed)
  4139.  1Ah    WORD    pixels per line of source data
  4140.  1Ch    WORD    number of scan lines in source data
  4141.  1Eh    WORD    number of scan lines in packet
  4142.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  4143.  22h    WORD    pixels per byte (1,2,4, or 8)
  4144.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  4145.  26h    WORD    source page number (if in expanded memory)
  4146.  28h    WORD    source handle (if in expanded memory)
  4147.  2Ah    WORD    source offset (if in expanded memory)
  4148. --------U-2FCD08-----------------------------
  4149. INT 2F - SWELL.EXE - UNUSED
  4150.     AX = CD08h
  4151. Return: AX = FFFFh (error)
  4152. ----------2FCD09-----------------------------
  4153. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  4154.     AX = CD09h
  4155.     CX:BX -> structure (see below)
  4156. Return: AL = 00h successful
  4157.        = 80h unsuccessful
  4158. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  4159.  
  4160. Format of structure:
  4161. Offset    Size    Description
  4162.  00h    BYTE    style
  4163.         44h ('D') diamond style
  4164.         4Ch ('L') line style
  4165.  01h    BYTE    reserved (00h)
  4166.  02h    WORD    frequency in lines per inch [sic]
  4167.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  4168.  04h    WORD    screen angle in degrees (-360 to 360)
  4169.         currently coerced to nearest of -45, 0, 45, or 90
  4170. --------U-2FCD09-----------------------------
  4171. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  4172.     AX = CD09h
  4173. Return: AX = 0000h
  4174. SeeAlso: AX=CD0Ah"SWELL"
  4175. ----------2FCD0A-----------------------------
  4176. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  4177.     AX = CD0Ah
  4178.     CX:BX -> palette structure (see below)
  4179. Return: AL = 00h successful
  4180.        = 80h unsuccessful
  4181. SeeAlso: AX=CD09h"Image Processing"
  4182.  
  4183. Format of palette structure:
  4184. Offset    Size    Description
  4185.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  4186.  01h    2**N    palette translation values, one per possible pixel value
  4187. --------U-2FCD0A-----------------------------
  4188. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  4189.     AX = CD0Ah
  4190. Return: AX = 0000h
  4191. SeeAlso: AX=CD09h"SWELL"
  4192. --------P-2FCD0F-----------------------------
  4193. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  4194.     AX = CD0Fh
  4195.     BL = function
  4196.         01h enable
  4197.         02h disable
  4198.         03h ???
  4199. Return: AL = status
  4200.         00h success
  4201. SeeAlso: AX=CD00h"LaserPort"
  4202. --------K-2FCF00-----------------------------
  4203. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  4204.     AX = CF00h
  4205. Return: AL = FFh if installed
  4206. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  4207. Note:    values in AL other than 00h cause an immediate return without modifying
  4208.       any registers
  4209. --------G-2FD000-----------------------------
  4210. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  4211.     AX = D000h
  4212. Return: CF set on error
  4213.         all other registers must be unchanged)
  4214.     CF clear if successful
  4215.         AL = FFh
  4216.         AH = driver semaphor
  4217.         00h driver is not active
  4218.         01h driver is active
  4219.         BX = CS of the driver
  4220.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  4221.         DL = buffer semaphor
  4222.         00h driver is not pending
  4223.         01h driver is pending between functions 02h and 03h
  4224.         DH = show semaphor
  4225.         00h driver is not pending
  4226.         01h driver is pending between functions 04h and 05h
  4227. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4228.       Schemmer, including a memory monitor, an interpreter and a
  4229.       disassembler
  4230. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  4231.       FFh; the default is D0h for the display driver and D1h for the
  4232.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  4233.       numbers used)
  4234.     this function MUST be reentrant, as MDEBUG calls it after every popup
  4235.       before any other actions.  The handler should not change any
  4236.       registers if the display is in an unsupported mode or in a mode
  4237.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  4238.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  4239.       not call any of the other functions for this popup session.
  4240.     MDEBUG will not call the other functions if the returned version is
  4241.       less than the actual version of MDEBUG.
  4242.     if the driver is reentrant, DL and DH should be 00h
  4243. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  4244. --------M-2FD000-----------------------------
  4245. INT 2F - ZWmous - INSTALLATION CHECK
  4246.     AX = D000h
  4247. Return: AX = 5A57h ("ZW") if installed
  4248.         BX = segment of resident code
  4249. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  4250.       with many non-mouse applications by entering the letter under the
  4251.       mouse cursor on button presses
  4252. SeeAlso: INT 33/AX=0003h
  4253. --------N-2FD000-----------------------------
  4254. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  4255.     AX = D000h
  4256. Return: AL = FFh if CD/Networker TSR is loaded
  4257.     BX = 4D44h ("MD") signature
  4258.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  4259.     DX = bitmap identifying all loaded CD/Networker TSRs.
  4260. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  4261.       resident redirector TSR and a transient program that controls the
  4262.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  4263.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  4264. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  4265. --------G-2FD001-----------------------------
  4266. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  4267.     AX = D001h
  4268. Return: CF set on error
  4269.     AL = driver semaphor
  4270.     AH = buffer semaphor
  4271. Notes:    MDEBUG calls this function after every successful call of the function
  4272.       00h. The function should reset all internal data and the status of
  4273.       the driver. If this function returns an error, MDEBUG will not call
  4274.       the other functions in this popup session.
  4275.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4276.       FFh; the default is D0h for the display driver and D1h for the
  4277.       command driver
  4278. SeeAlso: AX=D000h
  4279. --------G-2FD002-----------------------------
  4280. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  4281.     AX = D002h
  4282. Return: CF set on error
  4283.     CF clear if successful
  4284.         display memory saved and display switched to one of the text modes
  4285.           02h, 03h or 07h.
  4286. Note:    MDEBUG calls this function only once every popup session before
  4287.       displaying its windows.
  4288. SeeAlso: AX=D000h,AX=D003h
  4289. --------N-2FD002BX4D44-----------------------
  4290. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  4291.     AX = D002h
  4292.     BX = 4D44h
  4293.     DX = bitmap identifying one loaded CD/Networker TSR
  4294. Return: ES:DI -> data area owned by TSR
  4295. Note:    the format of the data area changes with each minor revision, so it
  4296.       cannot be counted on
  4297. SeeAlso: AX=D000h"Lotus"
  4298. --------G-2FD003-----------------------------
  4299. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  4300.     AX = D003h
  4301. Return: CF set on error
  4302.     CF clear if successful
  4303.         display restored to the mode it was in before calling AX=D002h and
  4304.           the display memory is restored
  4305. Note:    MDEBUG calls this function only once every popup session just before
  4306.      it exits to normal DOS.
  4307. SeeAlso: AX=D000h,AX=D002h
  4308. --------G-2FD004-----------------------------
  4309. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  4310.     AX = D004h
  4311. Return: CF set on error
  4312.     CF clear if successful
  4313.         display switched to mode it was in before calling AX=D002h and the
  4314.           display memory is restored
  4315. Note:    This function needn't save the display memory before changing it.
  4316. SeeAlso: AX=D000h,AX=D005h
  4317. --------G-2FD005-----------------------------
  4318. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  4319.     AX = D005h
  4320. Return: CF set on error
  4321.     CF clear if successful
  4322.         display restored to mode it was in before calling AX=D004h
  4323. Note:    This function needn't save or change the display memory
  4324. SeeAlso: AX=D000h,AX=D004h
  4325. --------G-2FD0-------------------------------
  4326. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  4327.     AH = D0h
  4328.     AL = 06h-7Fh
  4329. Note:    these functions are reserved for future use
  4330. --------G-2FD0-------------------------------
  4331. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  4332.     AH = D0h
  4333.     AL = 80h-FFh
  4334. Note:    these functions numbers are reserved for user defined features (e.g.
  4335.       communication between the transient und resident parts of the driver)
  4336. --------G-2FD100-----------------------------
  4337. INT 2F C - MDEBUG command driver - GET STATUS
  4338.     AX = D100h
  4339.     BX = version of MDEBUG (BH = major, BL = minor)
  4340.     CX = command driver counter
  4341. ---v1.60+---
  4342.     DS:SI -> MDEBUG identification table (see below)
  4343.     ES = segment of display memory used by MDEBUG
  4344.     DI = size of video mode used by MDEBUG
  4345.         (high byte = lines, low byte = columns)
  4346. Return: DL = FFh
  4347.     BX = version number of the driver if it is less than the version in BX,
  4348.          else unchanged
  4349.     CX incremented
  4350. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  4351.       Schemmer, including a memory monitor, an interpreter, and a
  4352.       disassembler
  4353. Notes:    called by MDEBUG at start of popup session; if the version number
  4354.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  4355.       not call any of the other functions during this popup session
  4356.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  4357.       FFh; the default is D0h for the display driver and D1h for the
  4358.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  4359.       actually used)
  4360.     this function must end with a far call to the old INT 2F handler after
  4361.       changing the registers
  4362.     this function MUST be reentrant
  4363.     command drivers must also declare the following data at the given
  4364.       offsets in the code segment
  4365.         100h  3 BYTEs    JMP-command in .COM-files
  4366.         103h    BYTE    NOP-command (90h)
  4367.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  4368.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  4369.                 each driver must have a unique name
  4370.     MDEBUG will pass every key and command to the command driver(s) before
  4371.       checking for a valid internal command
  4372. SeeAlso: AX=D000h,AX=D101h
  4373.  
  4374. Format of MDEBUG identification table:
  4375. Offset    Size    Description
  4376.  -2    WORD    entry offset
  4377.  00h    WORD    CS of MDEBUG
  4378.  02h    DWORD    old INT 08h vector
  4379.  06h    DWORD    old INT 09h vector
  4380.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  4381.  0Eh    BYTE    length of version string
  4382.  0Fh  N BYTEs    version string
  4383. --------G-2FD101-----------------------------
  4384. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  4385.     AX = D101h
  4386.     CX = command driver counter
  4387. Return: DL = FFh if successful
  4388.         CX incremented
  4389.          else error: all registers unchanged
  4390. Note:    this function must end with a  far call to the old INT 2F handler after
  4391.       changing the registers
  4392.     this function must be reentrant
  4393. --------G-2FD102-----------------------------
  4394. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  4395.     AX = D102h
  4396.     BL = first character of the interpreter command
  4397.     BH = last character of the interpreter command (or blank)
  4398.     DS:SI -> parameter for the interpreter command as ASCIZ string
  4399.     DS:DI -> MDEBUG data structure (see below)
  4400. Return: AL = FFh
  4401.     CF set on error
  4402.         AH = error number
  4403.         01h syntax error
  4404.         02h first shell of the command.com is activ
  4405.         03h esc pressed
  4406.         04h break pressed
  4407.         05h DOS is busy
  4408.         06h command ended
  4409.         07h division by zero
  4410.         08h invalid display driver
  4411.         09h invalid command driver
  4412.         0Ah error 8 and 9
  4413.         0Bh unknown error
  4414.         0Ch new error
  4415.             DS:SI -> ASCIZ error message (max 30 characters)
  4416.            else unknown error
  4417.     CF clear if successful
  4418.         AH = return code
  4419.         00h continue processing the command line
  4420.         01h leave MDEBUG popup session
  4421.         02h leave MDEBUG popup session and automatically popup again
  4422.             if the InDOS flag is zero
  4423.         03h not used (same as 00h)
  4424.         04h not used (same as 00h)
  4425.         05h put new command line into the input buffer,
  4426.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4427.         06h process new command line
  4428.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  4429.            else unknown status, but continue processing commmand line
  4430. Note:    this function must end with a far call to the old INT 2F handler (with
  4431.       registers unchanged) if the driver does not support the interpreter
  4432.       command in BX.  Otherwise, the driver must not chain to the old
  4433.       INT 2F.
  4434.  
  4435. Format of MDEBUG data structure:
  4436. Offset    Size    Description
  4437.  00h    WORD    register SE
  4438.  02h    WORD    register OF
  4439.  04h    WORD    register FS
  4440.  06h    WORD    register FO
  4441.  08h    WORD    register AX
  4442.  0Ah    WORD    register BX
  4443.  0Ch    WORD    register CX
  4444.  0Eh    WORD    register DX
  4445.  10h    WORD    register SI
  4446.  12h    WORD    register DI
  4447.  14h    WORD    register DS
  4448.  16h    WORD    register ES
  4449.  18h    WORD    register BP
  4450.  1Ah    WORD    register SS
  4451.  1Ch    WORD    register SP
  4452.  1Eh    WORD    register FL (flags)
  4453.  20h    WORD    register R0
  4454.  22h    WORD    register R1
  4455.  24h    WORD    register R2
  4456.  26h    WORD    register R3
  4457.  28h    WORD    register R4
  4458.  2Ah    WORD    register R5
  4459.  2Ch    WORD    register R6
  4460.  2Eh    WORD    register R7
  4461.  30h    WORD    register R8
  4462.  32h    WORD    register CS, return-address
  4463.  34h    WORD    register IP, return-address
  4464.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  4465.         saved monitor address (v1.70)
  4466.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  4467.         (original register values at popup entry of MDEBUG)
  4468.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4469.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  4470.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  4471.  6Ah    DWORD    address of the DOS-invars-table
  4472.  6Eh    DWORD    address of the InDOS flag
  4473.  72h    WORD    offset of the register which is used for the segment of the
  4474.         first monitor window
  4475.  74h    WORD    offset of the register which is used for the offset of the
  4476.         first monitor window
  4477.  76h    WORD    name of the register which is used for the segment of the
  4478.         first monitor segment
  4479.  78h    WORD    name of the register which is used for the offset of the first
  4480.         monitor window
  4481.  7Ah    WORD    pseudo register 1
  4482.  7Ch    WORD    pseudo register 2
  4483. --------G-2FD103-----------------------------
  4484. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  4485.     AX = D103h
  4486.     BX = key code (like result of an interrupt 16h call)
  4487.     CX = 0 -> the cursor is in the ASCII column of the monitor
  4488.     CX = 1 -> the cursor is in one of the hex fields of the monitor
  4489.     DS:SI -> MDEBUG data structure (see AX=D102h)
  4490.     ES:DI -> actual byte in the monitor
  4491. Return: AL = FFh
  4492.     AH = return code
  4493.         00h key processed, read next key
  4494.         01h leave MDEBUG popup session
  4495.         02h leave MDEBUG popup session and automatically popup again if DOS
  4496.         is not busy
  4497.         03h signal an error (beep)
  4498.         04h driver has redefined the key, proceed with the new key
  4499.         BX = new key code
  4500.         MDEBUG will not pass the new key to the command driver(s)
  4501.        else treat like code 00h
  4502. Note:    this function must end with a far call to the old INT 2F handler (with
  4503.       registers unchanged) if the driver does not support the key in BX.
  4504.       Otherwise, the driver must not chain to the old INT 2F.
  4505. SeeAlso: AX=D104h
  4506. --------G-2FD104-----------------------------
  4507. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  4508.     AX = D104h
  4509.     DS:SI -> MDEBUG data structure (see AX=D102h)
  4510. Return: AL = FFh
  4511.     AH = return code
  4512.         00h key processed, read next key
  4513.         01h leave MDEBUG popup session
  4514.         02h leave MDEBUG popup session and automactically popup again if
  4515.         DOS is not busy
  4516.         03h signal an error (beep)
  4517.         04h driver has redefined the key, proceed with the new key
  4518.         BX = new key code
  4519.         MDEBUG won't pass the new key to the command driver(s)
  4520.         05h put new command line into the input buffer
  4521.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4522.         06h process new command line
  4523.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  4524.        else treat like code 00h
  4525. Note:    this function must end with a far call to the old INT 2F handler if the
  4526.       driver does not support the key in BX.  Otherwise, the driver must
  4527.       not chain to the old INT 2F.
  4528. SeeAlso: AX=D103h
  4529. --------G-2FD1-------------------------------
  4530. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4531.     AH = D1h
  4532.     AL = 05h-0Ah
  4533. Note:    these functions are reserved for future use
  4534. --------G-2FD110-----------------------------
  4535. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  4536.     AX = D110h
  4537. Return: DL = FFh
  4538.     ES:BX -> next program in the chain for INT 2F
  4539.     CX = code segment of this driver
  4540.     DI = offset of driver identification table (see below) (v1.60+)
  4541. Notes:    only called by the transient part of the driver
  4542.     must be reentrant and the driver must not chain this function to the
  4543.       old INT 2F
  4544.  
  4545. Format of the driver identification table:
  4546. Offset    Size    Description
  4547.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  4548.                          ^- Note: ASCII 129,German U-umlaut
  4549.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  4550.          each driver must have a unique name
  4551. --------G-2FD111-----------------------------
  4552. INT 2F - MDEBUG command driver - START DRIVER
  4553.     AX = D111h
  4554. Return: DL = FFh
  4555. Notes:    only called by the transient part of the driver to inform the resident
  4556.       part that it is installed
  4557.     the function must be reentrant and the driver mustn't chain this
  4558.       function to the old INT 2F
  4559. SeeAlso: AX=D101h,AX=D112h
  4560. --------G-2FD112-----------------------------
  4561. INT 2F - MDEBUG command driver - END DRIVER
  4562.     AX = D112h
  4563. Return: DL = FFh
  4564. Notes:    only called by the transient part of the driver to inform the resident
  4565.       part that it will be released after this function
  4566.     the function must be reentrant and the driver mustn't chain this
  4567.       function to the old INT 2F
  4568. SeeAlso: AX=D101h,AX=D111h
  4569. --------G-2FD1-------------------------------
  4570. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  4571.     AH = D1h
  4572.     AL = 13h-7Fh
  4573. Note:    these functions are reserved for future use
  4574. --------G-2FD1-------------------------------
  4575. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  4576.     AH = D1h
  4577.     AL = 80h-FFh
  4578. Note:    these functions are reserved for user defined features (e.g.
  4579.       communication between the transient und resident parts of the driver)
  4580. --------U-2FD200-----------------------------
  4581. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  4582.     AX = D200h
  4583. Return: AL = FFh if installed??? (documented as AX = return value)
  4584. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  4585.       board by Advantec
  4586. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  4587. --------Q-2FD200BX5144-----------------------
  4588. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  4589.     AX = D200h
  4590.     BX = 5144h ("QD")
  4591.     CX = 4D45h ("ME")
  4592.     DX = 4D30h ("M0")
  4593. Return: AL = FFh installed
  4594.     if BX,CX,DX registers were as specified on entry:
  4595.         BX = 4D45h ("ME")
  4596.         CX = 4D44h ("MD")
  4597.         DX = 5652h ("VR")
  4598. Notes:    AH=D2h is the default multiplex number for the Quarterdeck RPCI
  4599.       (Resident Program Communication Interface), but it may use the first
  4600.       available multiplex number in the range D2h through FFh, then C0h
  4601.       through D1h
  4602.     the RPCI is supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  4603.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  4604.       Quarterdeck product, it just chains to the previous INT 2F handler
  4605. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  4606. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  4607. --------U-2FD201-----------------------------
  4608. INT 2F - PCL-838.EXE - UNINSTALL
  4609.     AX = D201h
  4610. Return: AX = return value
  4611. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  4612. --------m-2FD201BX4849-----------------------
  4613. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  4614.     AX = D201h
  4615.     BX = 4849h ("HI")
  4616.     CX = 4D45h ("ME")
  4617.     DX = 4D51h ("MQ")
  4618. Return: BX = 4F4Bh ("OK")
  4619.     ES:DI -> HIMEM entry point
  4620. Note:    AH=D2h is the default multiplex number, but any value in the range
  4621.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4622. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  4623. --------m-2FD201BX4849-----------------------
  4624. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  4625.     AX = D201h
  4626.     BX = 4849h ("HI")
  4627.     CX = 5241h ("RA")
  4628.     DX = 4D30h ("M0")
  4629. Return: BX = 4F4Bh ("OK")
  4630.     CX = segment of start of HIRAM chain
  4631.     DX = reserved block owner (QEMM/QRAM code segment)
  4632. Notes:    AH=D2h is the default multiplex number, but any value in the range
  4633.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4634.     the HIRAM memory chain has the same format as the regular DOS 4.0
  4635.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  4636.       have the block header program name field set to "UMB"; blocks whose
  4637.       "owner" field is set to the reserved segment returned in DX are
  4638.       locked-out regions such as video memory and ROMs.
  4639. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  4640. --------G-2FD201BX4D41-----------------------
  4641. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  4642.     AX = D201h
  4643.     BX = 4D41h ("MA")
  4644.     CX = 4E49h ("NI")
  4645.     DX = 4645h ("FE")
  4646. Return: BX = 5354h ("ST")
  4647. Note:    AH=D2h is the default multiplex number, but any value in the range
  4648.       D2h-FFh and then C0h-D1h may be used (see AX=D200h for details)
  4649. SeeAlso: AX=D200h
  4650. --------E-2FD201BX4D45-----------------------
  4651. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  4652.     AX = D201h
  4653.     BX = 4D45h ("ME")
  4654.     CX = 5155h ("QU")
  4655.     DX = 5044h ("PD")
  4656. Return: AL = FFh
  4657.     BX = 4F4Bh ("OK")
  4658. Notes:    AH=D2h is the default; use the Quarterdeck installation check described
  4659.       under AX=D200h
  4660.     called by QEMM 6.03
  4661.     performs a variety of actions before setting return registers
  4662. SeeAlso: AX=D200h
  4663. --------m-2FD201BX5145-----------------------
  4664. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  4665.     AX = D201h
  4666.     BX = 5145h ("QE")
  4667.     CX = 4D4Dh ("MM")
  4668.     DX = 3432h ("42")
  4669. Return: BX = 4F4Bh ("OK")
  4670.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  4671. Notes:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4672.       free AH value from D2h through FFh, then C0h through D1h
  4673.     this call is not available under QEMM v6.00 unless Windows3 support
  4674.       has been disabled with the NW3 switch to QEMM386.SYS
  4675. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  4676. --------V-2FD201BX5649-----------------------
  4677. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  4678.     AX = D201h
  4679.     BX = 5649h ("VI")
  4680.     CX = 4452h ("DR")
  4681.     DX = 414dh ("AM")
  4682. Return: BX = 4F4Bh ("OK")
  4683.     ES:DI -> VIDRAM entry point
  4684. Note:    Quarterdeck programs (QEMM/QRAM/VIDRAM/MANIFEST/etc) will search for a
  4685.       free AH value from D2h through FFh, then C0h through D1h
  4686. SeeAlso: AX=D200h
  4687.  
  4688. Call VIDRAM entry point with:
  4689.     AH = 00h get status
  4690.         Return: AL = VIDRAM state (see below)
  4691.             BL = extra RAM status
  4692.                 00h VIDRAM does not use extra RAM
  4693.                 01h VIDRAM uses EMS as extra RAM
  4694.                 02h VIDRAM uses EGA as extra RAM
  4695.             BH = feature flags (see below)
  4696.             CL = current monitor (01h = mono, 80h = color)
  4697.             SI = current top of memory (paragraph)
  4698.             DI = segment of start of HiRAM chain
  4699.     AH = 01h setup
  4700.         AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph)
  4701.         BL = extra RAM status (see above)
  4702.         BH = feature flags (see below)
  4703.         CL = monitor (01h = monochrome, 80h = color)
  4704.         SI = new top of memory (paragraph)
  4705.         DI = segment of start of HiRAM chain
  4706.     AH = 02h get end address of VIDRAM code
  4707.         Return: ES:DI -> VIDRAM partial map context (see below)
  4708. Return: CF set on error
  4709.     CF clear if successful
  4710.  
  4711. Bitfields for feature flags:
  4712. Bit(s)    Description
  4713.  0    override enabled
  4714.  1    mapped memory detected in A000h-B000h range
  4715.  2    top of memory not at 640K
  4716.  3    MDA detected
  4717.  4    high RAM exists in video area
  4718.  5    mapped memory detected in video area
  4719.  6-7    reserved???
  4720.  
  4721. Format of partial map context (EMS 3.2):
  4722. Offset    Size    Description
  4723.  00h    BYTE    EMS version ID (32h)
  4724.  01h    WORD    EMM handle for this entry
  4725.  03h    BYTE    number of frames
  4726.  04h    BYTE    first page frame
  4727.  05h    WORD    offset from ES to previously saved map
  4728.  
  4729. Format of partial map context (EMS 4.0):
  4730. Offset    Size    Description
  4731.  00h    BYTE    EMS version ID (40h)
  4732.  01h    WORD    mappable segment count
  4733.  03h  N WORD    mappable segments
  4734.     WORD    offset to previously saved map???
  4735. --------U-2FD202-----------------------------
  4736. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  4737.     AX = D202h
  4738.     CX:BX -> parameter table
  4739. Return: AX = return value
  4740. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  4741. --------R-2FD300BX4562-----------------------
  4742. INT 2F U - TeleReplica - INSTALLATION CHECK
  4743.     AX = D300h
  4744.     BX = 4562h
  4745.     CX = 2745h
  4746.     DX = serial port I/O base address??? (03F8h for v3.9)
  4747. Return: SI = segment of resident code
  4748.     AX = 251Dh
  4749.     BX = DF21h
  4750.     CX = F321h
  4751.     DX = ???
  4752. --------R-2FD3CB-----------------------------
  4753. INT 2F U - LapLink Quick Connect v6 - API
  4754.     AX = D3CBh
  4755.     CX = function
  4756.         0002h get ???
  4757.         Return: BX:AX -> ???
  4758.             CL = ???
  4759.             CH = ???
  4760.             DX = ???
  4761.             DI = COM1 I/O port???
  4762.             SI = COM2 I/O port???
  4763.         0003h initialization???
  4764.         0004h ???
  4765.         0005h initialization???
  4766.         0006h reset/clear ???
  4767.         Return: AX = 0000h
  4768.             ES:DI -> next byte after ??? cleared by this call
  4769.         0007h initialization???
  4770.         0008h uninstall
  4771.         Return: BX = status
  4772.                 0000h successful
  4773.                 FFFFh incomplete, stub remains in memory
  4774. Return: CX = 534Bh (except function 0002h)
  4775. Index:    uninstall;LapLink Quick Connect
  4776. --------l-2FD44D-----------------------------
  4777. INT 2F - 4DOS.COM v2.1+ - API
  4778.     AX = D44Dh
  4779.     BH = function
  4780.         00h installation check
  4781.         Return: AX = 44DDh
  4782.             BL = major version number
  4783.             BH = minor version number
  4784.             CX = PSP segment address for current invocation
  4785.             DL = 4DOS shell number (0 for the first (root) shell,
  4786.                  updated each time a new copy is loaded)
  4787.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  4788.         Return: nothing
  4789.         (internal, v4.0) ???
  4790.         Return: AX = 44DDh
  4791.             ES:BX -> data area (see below)
  4792.         02h ???
  4793.         DX = ???
  4794.     ---v2.1-3.03 only---
  4795.         03h EXEC program
  4796.         CX:DX -> EXEC record
  4797.         FEh deallocate shell number (passed through to root shell)
  4798.         ???
  4799.         FFh allocate shell number (passed through to root shell)
  4800. Note:    bug in v3.00 will crash system if unrecognized value in BH
  4801. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  4802. Index:    installation check;4DOS|installation check;NDOS
  4803.  
  4804. Format of EXEC record:
  4805. Offset    Size    Description
  4806.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  4807.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  4808.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  4809.  
  4810. Format of 4DOS v4.0 data area:
  4811. Offset    Size    Description
  4812.  00h  2 BYTEs    ???
  4813.  06h    WORD    XMS handle for swapping
  4814.     ???
  4815. --------l-2FD44E-----------------------------
  4816. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  4817.     AX = D44Eh
  4818. ---4DOS v3.01+---
  4819.     BX = 0000h 4DOS is ready to display prompt
  4820.        = 0001h 4DOS has displayed the prompt, about to accept user input
  4821. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  4822. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  4823. SeeAlso: AX=D44Dh
  4824. --------K-2FD44FBX0000-----------------------
  4825. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  4826.     AX = D44Fh
  4827.     BX = 0000h
  4828. Return: AX = 44DDh if installed
  4829. SeeAlso: AX=D44Fh/BX=0001h
  4830. --------K-2FD44FBX0001-----------------------
  4831. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  4832.     AX = D44Fh
  4833.     BX = 0001h
  4834.     CX = number of keystrokes (01h-FFh)
  4835.     DS:DX -> keystroke list (one word per keystroke)
  4836. Return: AX = status
  4837.         0000h successful
  4838.         nonzero failed
  4839.     BX,CX,DX destroyed
  4840. Notes:    the keystrokes are the exact values to return from subsequent calls to
  4841.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  4842.         0000h causes subfunctions 01h and 11h to indicate an empty
  4843.             keyboard buffer
  4844.         FFFFh is followed by a word indicating the number of clock
  4845.             ticks to delay before the next faked keystroke
  4846.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  4847.       invocation, and does not range-check CX; it will overwrite memory
  4848.       following the resident portion if CX is greater than 100h.
  4849. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  4850. --------G-2FD600-----------------------------
  4851. INT 2F - HEART.COM - INSTALLATION CHECK
  4852.     AX = D600h
  4853. Return: AX = 0303h (two hearts) if installed
  4854.         ES:DI -> buffer (see below)
  4855. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  4856. Notes:    Once the host program has identified the address of the data area, it
  4857.       can change this to indicate safe/critical, alternate colours, etc.
  4858.     The entries for the color table are in char/attrib form.  Every two
  4859.       entries form a pair which is alternated between 68 times a minute.
  4860.       The first half of the table is for color videos, the second mono.
  4861.       Within each half, the first half is for the safe chars, and the
  4862.       second for the critical chars.
  4863.  
  4864. Format of buffer:
  4865. Offset    Size    Description
  4866.  00h  8 WORDs    table of colors/attributes (see notes above)
  4867.  10h    BYTE    flags
  4868.         bit 0: program is in critical section, so flash double
  4869.             exclamation mark
  4870.         bit 1: program is in safe code, so flash the heart character
  4871.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  4872.         of second line)
  4873. --------T-2FD600-----------------------------
  4874. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  4875.     AX = D600h
  4876. Return: AL = D6h if installed
  4877. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  4878.       is a programmer's text editor by Greenview Data.
  4879. SeeAlso: AX=D601h,AX=D602h
  4880. --------T-2FD601-----------------------------
  4881. INT 2F U - VEDIT VSWAP - ???
  4882.     AX = D601h
  4883.     BL = subfunction number???
  4884. Return: BL = return code ???
  4885.     ES = resident portion's data??? segment
  4886.     DX = resident portion's code segment
  4887. SeeAlso: AX=D600h"VSWAP"
  4888. --------T-2FD602-----------------------------
  4889. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  4890.     AX = D602h
  4891.     other registers set as for INT 21/AX=4B00h
  4892. Return: CF set on error
  4893.         AL = error code
  4894.         82h = failure due to ???
  4895.     CF clear on success
  4896. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  4897. --------N-2FD701BX0000-----------------------
  4898. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  4899.     AX = D701h
  4900.     BX = 0000h
  4901. Return: AX = 0000h installed
  4902.         BX = interrupt number (60h to 66h)
  4903.        nonzero not present
  4904. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  4905.       necessary to examine the four bytes preceding the handlers for
  4906.       INT 60 through INT 66 for the string "BANV"
  4907. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  4908. --------N-2FD702-----------------------------
  4909. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  4910.     AX = D702h
  4911.     BX = function
  4912.     ???
  4913. Return: ???
  4914. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  4915. --------N-2FD703-----------------------------
  4916. INT 2F U - Banyan VINES v4+ - MAIL interface
  4917.     AX = D703h
  4918.     BX = function
  4919.     ???
  4920. Return: ???
  4921. SeeAlso: AX=D702h,AX=D704h
  4922. --------N-2FD704-----------------------------
  4923. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  4924.     AX = D704h
  4925.     BX = function
  4926.     ???
  4927. Return: ???
  4928. SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
  4929. --------N-2FD800-----------------------------
  4930. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  4931.     AX = D800h
  4932. Return: AL = FFh if installed
  4933.         DX = version number (0100h for v1.0, 0101h for v1.1)
  4934.         BX = data segment of resident copy
  4935.         ES:DI -> private API entry point (see below)
  4936.         SI = segment of resident code
  4937. SeeAlso: AX=7A00h,AX=D880h
  4938.  
  4939. Call CLIENT API entry point with:
  4940.     BX = function
  4941.         0000h get ???
  4942.         Return: DX = CLIENT version??? (0101h for v1.1)
  4943.             ES:BX -> ??? data
  4944.         0001h ???
  4945.         0002h ???
  4946.         0003h ???
  4947.         0004h ???
  4948.         0005h ???
  4949.         DL = ???
  4950.         ???
  4951.         Return: ???
  4952.         0006h get module name???
  4953.         ES:DI -> 16-byte buffer
  4954.         Return: CX = ???
  4955.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  4956.         0007h ???
  4957.         DX:CX = ???
  4958.         ???
  4959.         Return: ???
  4960.         0008h ???
  4961.         0009h ???
  4962.         DL = ???
  4963.         ES:DI -> 16-byte buffer for ???
  4964.         Return: CF clear if successful
  4965.                 AX = 0000h
  4966.                 CX = 0000h
  4967.                 SI,DI destroyed
  4968.             CF set on error
  4969.                 AX = error code 4903h
  4970.         000Ah ???
  4971.         AH = subfunction
  4972.             00h get ???
  4973.             01h clear/set ??? flag
  4974.             AL = new state (00h cleared, 01h set)
  4975.             02h set ???
  4976.             DX = new value of ???
  4977.         Return: DX = old value of ???
  4978.         000Bh ???
  4979.         AX = ???
  4980.         ???
  4981.         Return: ???
  4982.         000Ch ???
  4983.         AX = ???
  4984.         ???
  4985.         Return: ???
  4986.         000Dh ???
  4987.         AX = ???
  4988.         ???
  4989.         Return: ???
  4990.         000Eh get original INT 17
  4991.         Return: CF clear
  4992.             ES:BX -> original INT 17
  4993.         000Fh ???
  4994.         0010h ???
  4995.         AX = ???
  4996.         ???
  4997.         Return: ???
  4998.         0011h get ???
  4999.         Return: CF clear
  5000.             DL = ???
  5001.         0012h get ???
  5002.         AL = index of ???
  5003.         ES:DI -> 10-byte buffer for ???
  5004.         Return: CF clear if successful
  5005.                 ES:DI buffer filled
  5006.                 AX,CX destroyed
  5007.             CF set on error
  5008.                 AX = error code (4907h if AL out of range)
  5009.         0013h get ???
  5010.         Return: CF clear
  5011.             DH = ???
  5012.             DL = ???
  5013.         0014h ???
  5014.         DL = ???
  5015.         ???
  5016.         Return: CF clear if successful
  5017.                 ???
  5018.             CF set on error
  5019.                 AX = error code 8056h
  5020.         0015h ???
  5021.         DX = ???
  5022.         Return: ES:DI -> ???
  5023.         other
  5024.         Return: CF set
  5025.             AX = 0001h (invalid function)
  5026. --------N-2FD856-----------------------------
  5027. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  5028.     AX = D856h
  5029. Return: AX = 0001h if supported???
  5030.     BX = ??? (0004h for v1.1)
  5031.     CX = ??? (0F20h for v1.1)
  5032.     DS = segment of resident code
  5033.     ES = data segment of resident copy
  5034. Note:    this function is also supported by Personal NetWare SERVER, bundled
  5035.       with Novell DOS 7
  5036. --------N-2FD880-----------------------------
  5037. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  5038.     AX = D880h
  5039. Return: AL = FFh if installed
  5040.         DX = version number (0100h for v1.0, 0101h for v1.1)
  5041.         BX = data segment of resident copy
  5042.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  5043.         ES:DI -> private API entry point (see below)
  5044.         SI = ??? (offset of configuration info?)
  5045. Note:    this function is also supported by Personal NetWare SERVER, but DI is
  5046.       not set; instead, ES:SI points at the API entry point
  5047. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  5048.  
  5049. Call SERVER API entry point with:
  5050.     BX = function
  5051.         0000h ???
  5052.         ???
  5053.         Return: ???
  5054.         Note: closes open files by calling INT 21/AH=3Eh
  5055.         0001h get connection information
  5056.         DX = connection number (0001h-max connections)
  5057.         ES:DI -> 28-byte buffer for connection information
  5058.         Return: CF clear if successful
  5059.                 ES:DI buffer filled
  5060.             CF set on error
  5061.                 AX = FFFFh
  5062.     ---Personal NetWare only---
  5063.         0002h ???
  5064.         0003h ???
  5065.         0004h ???
  5066.         0005h ???
  5067.         0006h ???
  5068.         0007h ???
  5069.         other
  5070.         Return: CF set
  5071.             AX = 0001h (invalid function)
  5072. --------d-2FD8C0-----------------------------
  5073. INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
  5074.     AX = D8C0h
  5075. Return: AL = FFh if installed
  5076.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  5077.         DH = major version??? (01h for v1.1)
  5078.         DL = minor version??? (01h for v1.1)
  5079.         ES:DI -> private API entry point (see below)
  5080. Program: NLCACHE is a disk cache included with NetWare Lite
  5081. SeeAlso: AX=D800h,AX=D880h
  5082.  
  5083. Call NLCACHE/NWCACHE API entry point with:
  5084.     BX = function
  5085.         0000h ???
  5086.         ???
  5087.         Return: CF clear if successful
  5088.                 AX = 0000h
  5089.                 ???
  5090.             CF set on error
  5091.                 AX = error code
  5092.         0001h (NWCACHE only) ???
  5093.         ES:DI -> buffer for ???
  5094.         Return: ???
  5095.         other
  5096.         Return: CF set
  5097.             AX = 0001h (invalid function)
  5098. --------F-2FDA00-----------------------------
  5099. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  5100.     AX = DA00h
  5101. Return: AH = enabled state (00h = enabled, 01h = disabled)
  5102.     AL = 5Ah installed
  5103. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5104.       fax modems.
  5105. Note:    This function, and the other DAxxh functions, may apply only to version
  5106.       1 of the software; see AX=DB00h for the version 2 installation check
  5107. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  5108. --------F-2FDA01-----------------------------
  5109. INT 2F - ZyXEL ZFAX - UNINSTALL
  5110.     AX = DA01h
  5111. Return: AL = 00h Success
  5112.          01h Failure
  5113. SeeAlso: AX=DA00h,AX=DB01h
  5114. --------F-2FDA02-----------------------------
  5115. INT 2F - ZyXEL ZFAX - DISABLE
  5116.     AX = DA02h
  5117. Return: AL = 00h
  5118. SeeAlso: AX=DA03h,AX=DB02h
  5119. --------F-2FDA03-----------------------------
  5120. INT 2F - ZyXEL ZFAX - ENABLE
  5121.     AX = DA03h
  5122. Return: AL = 00h
  5123. SeeAlso: AX=DA02h,AX=DB03h
  5124. --------G-2FDA55-----------------------------
  5125. INT 2F U - TRAP.COM - INSTALLATION CHECK
  5126.     AX = DA55h
  5127.     DL = interrupt number
  5128.     DH = ???
  5129. Return: if installed
  5130.         AH = interrupt number
  5131.         AL = ???
  5132.         ES:BX -> ???
  5133. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  5134. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  5135.       the interrupt number is part of the installation check
  5136. --------N-2FDAB2-----------------------------
  5137. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  5138.     AX = DAB2h
  5139. Return: AX = 00FFh if installed
  5140.         BX:CX -> MIB table
  5141. Program: BWSNMP is part of the BW-NFS package
  5142. SeeAlso: INT 62/AH=00h"ETHDEV"
  5143. --------F-2FDB00-----------------------------
  5144. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  5145.     AX = DB00h
  5146. Return:    AL = 5Bh if installed (v2.x)
  5147.         ES:BX -> ???
  5148.     AX = 00DBh if installed (v3)
  5149.         ES:BX -> ZFAX configuration table (see below)
  5150. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  5151.       fax modems.
  5152. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  5153.  
  5154. Format of ZFAX Configuration Table:
  5155. Offset    Size    Description
  5156.  00h    WORD    version number (0300h for v3.0)
  5157.  02h    BYTE    reserved
  5158.  03h 70 BYTEs    ZFAX working path
  5159.  49h 128 BYTEs    path to external editor
  5160.  C9h 128 BYTEs    path to external terminal emulator
  5161. 149h 128 BYTEs    path to Ring Shell
  5162. 1C9h 128 BYTEs    path to DOS Shell
  5163. 249h 128 BYTEs    path to Data Shell
  5164. 2C9h 70 BYTEs    path to Chinese font
  5165. 30Fh    BYTE    printer type (see below)
  5166. 310h    BYTE    printer port (00h = LPT1, etc.)
  5167. 311h    BYTE    type of graphics adapter
  5168.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  5169. 312h    BYTE    display type
  5170.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  5171. 313h    BYTE    scan code for ZFAX hotkey
  5172. 314h    BYTE    shift mask for ZFAX hotkey
  5173. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  5174. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  5175. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  5176. 318h    BYTE    normal ring answer type (see below)
  5177. 319h    BYTE    Ring 1 answer type (see below)
  5178. 31Ah    BYTE    Ring 2 answer type (see below)
  5179. 31Bh    BYTE    Ring 3 answer type (see below)
  5180. 31Ch    BYTE    COM port for modem
  5181. 31Dh    BYTE    speaker volume (00h-07h)
  5182. 31Eh    BYTE    modem dial timer, seconds
  5183. 31Fh    WORD    user-defined COM port I/O address
  5184. 321h    BYTE    user-defined COM port IRQ number
  5185. 322h 81 BYTEs    dial prefix string
  5186. 373h 79 BYTEs    dial postfix string
  5187. 3C2h    BYTE    ring count until automatic answer
  5188. 3C3h    BYTE    retry count on busy signal
  5189. 3C4h    BYTE    redial delay in seconds
  5190. 3C5h    WORD    system password
  5191. 3C7h    BYTE    reserved
  5192. 3C8h    BYTE    voice file compression format
  5193.         00h CELP at 9600bps
  5194.         01h two-bit ADPCM at 19200bps
  5195.         03h three-bit ADPCM at 28800bps
  5196. 3C9h    BYTE    voice system: DTMF 0 action (see below)
  5197. 3CAh    BYTE    voice system: DTMF 1 action
  5198. 3CBh    BYTE    voice system: DTMF 2 action
  5199. 3CCh    BYTE    voice system: DTMF 3 action
  5200. 3CDh    BYTE    voice system: DTMF 4 action
  5201. 3CEh    BYTE    voice system: DTMF 5 action
  5202. 3CFh    BYTE    voice system: DTMF 6 action
  5203. 3D0h    BYTE    voice system: DTMF 7 action
  5204. 3D1h    BYTE    voice system: DTMF 8 action
  5205. 3D2h    BYTE    voice system: DTMF 9 action
  5206. 3D3h    WORD    reserved
  5207. 3D5h 25 BYTEs    local FAX ID to display on page header
  5208. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  5209. 402h    BYTE    FAX page size
  5210.         00h A4 (210x297mm)
  5211.         01h B4 (250x353mm)
  5212.         02h A3 (297x420mm)
  5213. 403h    BYTE    FAX resolution
  5214.         00h normal (3.85 pixels/mm)
  5215.         01h high (7.7 pixels/mm)
  5216. 404h    BYTE    FAX coding scheme
  5217.         00h 1-D, modified Huffman coding
  5218.         01h 2-D, modified READ coding
  5219. 405h    BYTE    left margin for text in millimeters
  5220. 406h    BYTE    vertical insertion for text in mm (0-20)
  5221. 407h    BYTE    horizontal insertion in mm (0-20)
  5222. 408h    BYTE    maximum text lines per page
  5223. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  5224. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  5225. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  5226. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  5227. 40Dh 81 BYTEs    cover page logo filename
  5228. 45Eh 65 BYTEs    cover page sender name
  5229. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  5230. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  5231. 4A1h    BYTE    print capture printer port
  5232. 4A2h    BYTE    print capture timer in seconds
  5233. 4A3h    BYTE    scan code for print capture hotkey
  5234. 4A4h    BYTE    shift mask for print capture hotkey
  5235. 4A5h    BYTE    DataShell type
  5236.         00h internal Zmodem, 01h Data Shell, 02h disable
  5237. 4A6h    BYTE    video I/O type
  5238.         00h auto-detect, 01h use BIOS, 02h direct writes
  5239. 4A7h    BYTE    call transfer digits
  5240. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  5241.  
  5242. Values for printer type:
  5243.  00h    EPSON FX (9 pins)
  5244.  01h    EPSON LQ (24 pins)
  5245.  02h    HP Laser Jet II, letter size
  5246.  03h    HP Laser Jet II, legal size
  5247.  04h    HP Laser Jet II, A4 size
  5248.  05h    HP Laser Jet III, letter size
  5249.  06h    HP Laser Jet III, legal size
  5250.  07h    HP Laser Jet III, A4 size
  5251.  
  5252. Values for Ring Answer Type:
  5253.  00h    voice system
  5254.  01h    FAX only
  5255.  02h    Data Shell
  5256.  03h    Ring Shell
  5257.  04h    DOS Shell
  5258.  05h    ignore
  5259.  
  5260. Values for DTMF action:
  5261.  00h    none
  5262.  01h    page operator
  5263.  02h    FaxBack
  5264.  03h    announcement
  5265.  04h    call transfer
  5266.  05h    receive FAX
  5267.  06h    receive data
  5268.  07h    voice mailbox
  5269.  08h    DOS Shell Out
  5270.  09h    Data Shell Out
  5271. --------F-2FDB01-----------------------------
  5272. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  5273.     AX = DB01h
  5274. Return: AX = status
  5275.         0000h successful
  5276.         0001h ZFAX is busy
  5277.         0002h another program resident above ZFAX
  5278. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  5279.       not been hooked by other TSRs and releases the TSR's memory
  5280.     ZFAX v2.x crashes the contributor's machine when this function is
  5281.       called
  5282. SeeAlso: AX=DA01h,AX=DB00h
  5283. --------F-2FDB02-----------------------------
  5284. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  5285.     AX = DB02h
  5286. Return: AL = 00h
  5287. SeeAlso: AX=DA02h,AX=DB00h,AX=DB03h
  5288. --------F-2FDB03-----------------------------
  5289. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  5290.     AX = DB03h
  5291. Return: AL = 00h
  5292. SeeAlso: AX=DA03h,AX=DB00h,AX=DB02h
  5293. --------F-2FDB10-----------------------------
  5294. INT 2F - ZyXEL ZFAX v3 - EXECUTE ZFAX MAIN MENU
  5295.     AX = DB10h
  5296. --------F-2FDB11-----------------------------
  5297. INT 2F - ZyXEL ZFAX v3 - SEND FAX
  5298.     AX = DB11h
  5299.     DS:SI -> filename including path
  5300.     DS:BX -> remote FAX number
  5301. Return:    AX = status (see below)
  5302. SeeAlso: AX=DB12h,AX=DB13h,AX=DB14h,AX=DB20h,AX=DB21h
  5303.  
  5304. Values for ZFAX status:
  5305.  00h    OK
  5306.  01h    invalid DOS function
  5307.  02h    file not found
  5308.  03h    path not found
  5309.  04h    no file handle available
  5310.  05h    access denied by DOS
  5311.  06h    invalid handle
  5312.  07h    disk full
  5313.  10h    printer error
  5314.  11h    no graphics font
  5315.  12h    no ZFAX font
  5316.  20h    DCD dropped while sending
  5317.  21h    not ZyXEL modem
  5318.  22h    busy
  5319.  23h    no response from COM port
  5320.  24h    no carrier
  5321.  25h    no dial tone
  5322.  26h    no answer
  5323.  27h    no response
  5324.  28h    failed to send FAX
  5325.  30h    user aborted
  5326.  40h    critical error on disk
  5327.  50h    parameter error
  5328. --------F-2FDB12-----------------------------
  5329. INT 2F - ZyXEL ZFAX v3 - PRINT FAX
  5330.     AX = DB12h
  5331.     DS:SI -> filename, including path
  5332. Return: AX = status
  5333. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  5334. --------F-2FDB13-----------------------------
  5335. INT 2F - ZyXEL ZFAX v3 - CONVERT FAX
  5336.     AX = DB13h
  5337.     DS:SI -> source filename, including path
  5338.     DS:BX -> destination filename, including path
  5339.     CX = destination file format
  5340.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  5341. Return: AX = status
  5342. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  5343. --------F-2FDB14-----------------------------
  5344. INT 2F - ZyXEL ZFAX v3 - VIEW FAX
  5345.     AX = DB14h
  5346.     DS:SI -> source filename, including path
  5347. Return: AX = status
  5348. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  5349. --------F-2FDB20-----------------------------
  5350. INT 2F - ZyXEL ZFAX v3 - POLL FAX
  5351.     AX = DB20h
  5352.     DS:SI -> remote FAX number
  5353. Return: AX = status
  5354. SeeAlso: AX=DB11h,AX=DB21h
  5355. --------F-2FDB21-----------------------------
  5356. INT 2F - ZyXEL ZFAX v3 - SEND VOICE
  5357.     AX = DB21h
  5358.     DS:SI -> filename including path
  5359.     DS:BX -> remote phone number
  5360. Return:    AX = status
  5361. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  5362. --------F-2FDB22-----------------------------
  5363. INT 2F - ZyXEL ZFAX v3 - CONVERT VOICE FILE
  5364.     AX = DB22h
  5365.     DS:SI -> source filename, including path
  5366.     DS:BX -> destination filename, including path
  5367.     CX = destination format
  5368.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  5369. Return:    AX = status
  5370. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  5371. --------F-2FDB23-----------------------------
  5372. INT 2F - ZyXEL ZFAX v3 - RECORD VOICE FILE
  5373.     AX = DB23h
  5374.     DS:SI -> destination filename, including path
  5375.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  5376.     DX = voice file format
  5377.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  5378. Return: AX = status
  5379. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5380. --------F-2FDB24-----------------------------
  5381. INT 2F - ZyXEL ZFAX v3 - PLAY VOICE FILE
  5382.     AX = DB24h
  5383.     DS:SI -> name of voice file, including path
  5384.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  5385. Return: AX = status
  5386. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  5387. --------F-2FDB25-----------------------------
  5388. INT 2F - ZyXEL ZFAX v3 - ANSWER MODEM WITH VOICE SYSTEM
  5389.     AX = DB25h
  5390. Return: AX = status
  5391. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  5392. --------F-2FDB26-----------------------------
  5393. INT 2F - ZyXEL ZFAX v3 - DIAL PHONE
  5394.     AX = DB26h
  5395.     DS:SI -> remote phone number
  5396. Return: AX = status
  5397. SeeAlso: AX=DB25h
  5398. --------F-2FDB27-----------------------------
  5399. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  5400.     AX = DB27h
  5401. Return: AX = status
  5402. SeeAlso: AX=DB25h,AX=DB28h
  5403. --------F-2FDB28-----------------------------
  5404. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  5405.     AX = DB28h
  5406. Return: AX = status
  5407. SeeAlso: AX=DB25h,AX=DB27h,AX=DB31h
  5408. --------F-2FDB31-----------------------------
  5409. INT 2F - ZyXEL ZFAX v3 - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  5410.     AX = DB31h
  5411.     DS:SI -> source file name, including path
  5412.     DS:BX -> remote data number
  5413. Return: AX = status
  5414. SeeAlso: AX=DB00h,AX=DB28h
  5415. --------F-2FDB40-----------------------------
  5416. INT 2F - ZyXEL ZFAX v3 - INTERNAL TERMINAL
  5417.     AX = DB40h
  5418. Return: AX = status
  5419. SeeAlso: AX=DB00h
  5420. --------K-2FDC00-----------------------------
  5421. INT 2F - GOLD.COM - INSTALLATION CHECK
  5422.     AX = DC00h
  5423. Return: AL = 00h not installed
  5424.        = FFh installed
  5425. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  5426.       for F1; the purpose is to improve Kermit's VTxxx emulation
  5427. --------K-2FDC01-----------------------------
  5428. INT 2F - GOLD.COM - GET STATE
  5429.     AX = DC01h
  5430. Return: AL = status
  5431.         00h off
  5432.         01h on
  5433. SeeAlso: AX=DC00h,AX=DC02h
  5434. --------K-2FDC02-----------------------------
  5435. INT 2F - GOLD.COM - SET STATE
  5436.     AX = DC02h
  5437.     DL = new state
  5438.         00h off
  5439.         01h on
  5440. Return: AL = 00h (OK)
  5441. SeeAlso: AX=DC01h
  5442. --------t-2FDD-------------------------------
  5443. INT 2F - CappaCom programs - API
  5444.     AH = DDh
  5445.     AL = 00h general installation check
  5446.         Return: AL = FFh if any CappaCom programs are resident
  5447.     AL = FEh get info
  5448.         Return: ES:BX -> TSR info list (see below)
  5449.     AL = program identifier
  5450.         BH = function
  5451.         FDh get version
  5452.             Return: BX = version
  5453.         FFh installation check
  5454.             Return: AL = FFh if installed
  5455.                 BX = version
  5456.                 ES = segment of resident code
  5457.         others vary by program
  5458. Return: AL = status
  5459.         bit 7 set on error
  5460.         AL = 81h unknown function
  5461. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  5462.       conflict
  5463. Index:    installation check;SoftCom programs
  5464. Index:    installation check;CappaCom programs
  5465.  
  5466. Format of TSR info list:
  5467. Offset    Size    Description
  5468.  00h  9 BYTEs    blank-padded ASCIZ program name
  5469.  09h    BYTE    program ID
  5470.  0Ah    WORD    program's PSP segment
  5471.  0Ch    WORD    program version (major in high byte)
  5472.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  5473.  12h    BYTE    number of interrupts hooked
  5474.  13h  5 BYTEs    interrupt numbers hooked by program
  5475.  18h  8 BYTEs    reserved
  5476. ----------2FDD-------------------------------
  5477. INT 2F - MIXFIX.EXE - API
  5478.     AH = DDh
  5479.     AL = function
  5480.         00h installation check
  5481.         Return: AX = 00DDh if installed
  5482.                 BX = version (BH = major, BL = minor)
  5483.         41h/61h get From: address
  5484.         Return: AX = 0001h
  5485.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  5486.         49h/69h get To: address
  5487.         Return: AX = 0001h
  5488.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  5489.         4Ah/6Ah get subject of mail
  5490.         Return: AX = 0001h
  5491.             ES:BX -> ASCIZ subject of handled mail
  5492.         4Dh/6Dh get mail name
  5493.         Return: AX = 0001h
  5494.             ES:BX -> ASCIZ full name of current mail file
  5495.         4Eh/6Eh get From: field
  5496.         Return: AX = 0001h
  5497.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  5498. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  5499.       other programs for mail handling.  The called programs may use the
  5500.       services described here to retrieve information about the mail being
  5501.       handled.
  5502. Index: installation check;MIXFIX.EXE
  5503. --------d-2FDD--BX7844-----------------------
  5504. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  5505.     AH = DDh
  5506.     BX = 7844h ('xD')
  5507.     CX = 4953h ('IS')
  5508.     DX = 4B3Fh ('K?')
  5509.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  5510.     ES:DI -> 25-byte data buffer (see below)
  5511. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  5512.        BX = 87BBh
  5513.        DX = B4C0h
  5514.        ES:DI buffer filled
  5515.     CX,CF destroyed
  5516. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  5517.  
  5518. Format of data buffer:
  5519. Offset    Size    Description
  5520.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  5521.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  5522.  05h    BYTE    flag: 01h if write protected, 00h if not
  5523.  06h    BYTE    flag: 01h if root directory full, 00h if not
  5524.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  5525.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  5526.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  5527.  0Ah  2 BYTEs    reserved
  5528.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  5529.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  5530.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  5531.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  5532.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  5533.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  5534.  12h    BYTE    flag: 01h terse display, 00h verbose display
  5535.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  5536.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  5537.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  5538.  16h    WORD    count of open files in RAM disk
  5539.  18h    BYTE    unused
  5540. --------Q-2FDE00BX4456-----------------------
  5541. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  5542.     AX = DE00h
  5543.     BX = 4456h ("DV")
  5544.     CX = 5844h ("XD")
  5545.     DX = 4931h ("I1")
  5546. Return: AL = FFh if installed (even if other registers do not match)
  5547.     if BX,CX, and DX were as specified on entry,
  5548.         BX = 4845h ("HE")
  5549.         CX = 5245h ("RE")
  5550.         DX = 4456h ("DV")
  5551. Notes:    AH=DEh is the default XDI multiplex number, but may range from C0h-FFh
  5552.     programs should check for XDI starting at DEh to FFh, then C0h to DDh
  5553.     the XDI handler should not issue any DOS or BIOS calls, nor should it
  5554.       issue DESQview API calls other than those allowed from hardware ints
  5555. SeeAlso: AX=DE02h,INT 15/AX=5400h
  5556. --------Q-2FDE01-----------------------------
  5557. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  5558.     AX = DE01h
  5559.     BX = driver ID
  5560.     other registers as needed by driver
  5561. Notes:    XDI drivers should pass this call through to previous handler if ID
  5562.       does not match
  5563.     DESQview never calls this function
  5564. --------Q-2FDE01BX4450-----------------------
  5565. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  5566.     AX = DE01h
  5567.     BX = 4450h ("DP")
  5568.     CX = 4D49h ("MI")
  5569.     DX = 3039h ("09")
  5570. Return: AL = FFh if installed
  5571.         BX = 4D42h ("MB")
  5572.         CX = 4921h ("I!")
  5573.         DX = 8F4Fh
  5574.         ES:DI -> filename of DPMI host overlay
  5575. Note:    the installation check consists of testing for the existence of the
  5576.       character device QDPMI$$$
  5577. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  5578. Index:    installation check;QDPMI
  5579. --------U-2FDE01BX5242-----------------------
  5580. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  5581.     AX = DE01h
  5582.     BX = 5242h ("RB")
  5583.     CX:DX = program identifier
  5584.         656F7000h ("eop",0) for DVeop
  5585. Return: AX = 5242h ("RB") if installed
  5586.         ES:BX -> data or entry point
  5587.         CX = version number (CH = major, CL = minor)
  5588.  
  5589. Call DVeop entry point with:
  5590.     ES:DI -> callback address or 0000h:0000h to remove callback
  5591. Return: AX = status
  5592.         0000h failed (callback table full or attempted to remove non-
  5593.             existent callback)
  5594.         0001h successful
  5595.         ES:DI -> chaining address
  5596.     BX,CX,DX destroyed
  5597. Notes:    the callback function is called with a simulated interrupt when the
  5598.       DESQview window containing it is closed; it should perform all
  5599.       necessary cleanup and then perform a FAR jump to the chaining address
  5600.       or an IRET if the chaining address is 0000h:0000h
  5601.     if the program wishes to remove itself before the window is closed, it
  5602.       should call the DVeop entry point with the previously returned
  5603.       chaining address and ignore the returned chaining address.
  5604. --------U-2FDE01BX7474-----------------------
  5605. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  5606.     AX = DE01h
  5607.     BX = 7474h
  5608.     CL = function
  5609.         00h installation check
  5610.         Return: AL = FFh
  5611.         01h get process handle
  5612.         DX = keys on Open Window menu (DL = first, DH = second)
  5613.         Return: AX = process handle or 0000h if not running
  5614.         02h (v1.3+) set TMAN handle
  5615.         DX = TMAN process handle
  5616.         03h (v1.3+) set open keys to ignore on next CL=01h call
  5617.         DX = keys on Open Window menu (DL = first, DH = second)
  5618. Return: BX = 4F4Bh ("OK")
  5619.     DL destroyed
  5620. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  5621.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  5622. Index:    installation check;DVTXDI
  5623. --------U-2FDE01BX7575-----------------------
  5624. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  5625.     AX = DE01h
  5626.     BX = 7575h
  5627.     CX = function
  5628.         0000h installation check
  5629.         Return: AX = 00FFh if installed
  5630.         0001h turn on notification (currently unused)
  5631.         Return: AX = 0001h
  5632.         0002h turn off notification (currently unused)
  5633.         Return: AX = 0001h
  5634.         0003h get process information
  5635.         Return: AX = status
  5636.                 0000h failed
  5637.                 0001h successful
  5638.                 BX = last instantaneous time slice
  5639.                     in 1/100s (v1.10)
  5640.                     in 1/18s (v1.11+)
  5641.                 CX = number of processes
  5642.                 DX = number of "(starting)" records (v2.00+)
  5643.                 SI = number of records in process info array
  5644.                      (v2.00+) (always 15 for v1.x)
  5645.                 ES:DI -> process info array (see below)
  5646.         0004h get version
  5647.         Return: AH = major version
  5648.             AL = minor version
  5649.         0005h (v1.10+) get time since DESQview started
  5650.         Return: DX:AX = 1/100s since DV start (v1.10)
  5651.             DX:AX = 1/18s since DV start (v1.11+)
  5652.         0006h (v1.10+) get number of task switches
  5653.         Return: DX:AX = total task switches
  5654.             CX = task switches in last instantaneous interval
  5655. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  5656.       Daniel J. Bodoh
  5657.     for v1.00, function 0003h allocates common memory, which the caller
  5658.       must deallocate after reading the process information; only the
  5659.       currently used records are placed in the buffer
  5660.     for v1.10+, function 0003h merely returns a pointer to the internal
  5661.       array of process information; the caller should make a copy of the
  5662.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  5663.       those records with bit 7 of the first byte set are valid.
  5664. Index:    installation check;DVSIXDI
  5665.  
  5666. Format of information for one process (v1.00):
  5667. Offset    Size    Description
  5668.  00h    BYTE    flags
  5669.         bit 7: process slot is valid
  5670.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  5671.         Open Windows menu, else undefined
  5672.  03h    WORD    Switch Windows window number
  5673.  05h    WORD    segment of process handle
  5674.  07h    WORD    number of tasks owned by process
  5675.  09h    WORD    mapping context of process (see INT 15/AX=1016h)
  5676.  0Bh    DWORD    hook for other programs
  5677.  
  5678. Format of information for one process (v1.10-v2.00):
  5679. Offset    Size    Description
  5680.  00h    BYTE    process flags (see below)
  5681.  01h    WORD    Open Window keys
  5682.  03h    WORD    Switch Windows number
  5683.  05h    WORD    segment of process handle
  5684.  07h    WORD    number of tasks for process
  5685.  09h    WORD    process mapping context
  5686.  0Bh    DWORD    time process started (relative to start of DESQview)
  5687.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  5688.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  5689.  17h    DWORD    total CPU time since process started
  5690.  1Bh    DWORD    CPU time at start of current instantaneous interval
  5691.  1Fh    DWORD    CPU time in current instantaneous interval
  5692.  23h    DWORD    hook for other programs
  5693. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  5694.  
  5695. Bitfields for process flags:
  5696. Bit(s)    Description
  5697.  7    valid record
  5698.  6    (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
  5699.       and only offsets 01h and 09h are valid
  5700.  5    (v2.00+) this app currently owns the CPU
  5701.  4    reserved (0)
  5702.  3    DESQview system task
  5703.  2    reserved (0)
  5704.  1    task has keyboard (currently unused)
  5705.  0    task swapped out (currently unused)
  5706. --------Q-2FDE01BXFFFE-----------------------
  5707. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  5708.     AX = DE01h
  5709.     BX = FFFEh
  5710.     CX = 4D47h ("MG")
  5711.     DX = 0052h (0,"R")
  5712. Return: AL = FFh
  5713.     DX = 584Dh
  5714. --------Q-2FDE02-----------------------------
  5715. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  5716.     AX = DE02h
  5717.     BX = mapping context of DESQview
  5718.     DX = handle of DESQview system task
  5719. Note:    driver should pass this call to previous handler after doing its work
  5720. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  5721. --------Q-2FDE03-----------------------------
  5722. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  5723.     AX = DE03h
  5724.     BX = mapping context of DESQview
  5725.     DX = handle of DESQview system task
  5726. Notes:    driver should pass this call to previous handler before doing its work
  5727.     DESQview makes this call when it is exiting, but before unhooking any
  5728.       interrupt vectors
  5729. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  5730. --------Q-2FDE04-----------------------------
  5731. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  5732.     AX = DE04h
  5733.     BX = mapping context of new process (see INT 15/AX=1016h)
  5734.     DX = handle of process
  5735. Return: nothing
  5736. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  5737.       (see below) from "common" memory to control access to XMS memory
  5738.     all DOS, BIOS, and DV API calls are valid in handler
  5739.     driver should pass this call to previous handler after processing it
  5740. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  5741.  
  5742. Format of XMS XDI structure:
  5743. Offset    Size    Description
  5744.  00h    DWORD    pointer to 10-byte record???
  5745.  04h    DWORD    pointer to next XMS XDI structure
  5746.  08h    WORD    mapping context
  5747.  0Ah    BYTE    ???
  5748.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  5749.         (FAR jump to next field)
  5750.  10h  6 BYTEs    FAR handler for XMS driver entry point
  5751.         (consists of a FAR CALL followed by RETF)
  5752. --------Q-2FDE05-----------------------------
  5753. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  5754.     AX = DE05h
  5755.     BX = mapping context of process (see INT 15/AX=1016h)
  5756.     DX = handle of last task in process
  5757. Return: nothing
  5758. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  5759.     driver should pass this call to previous handler before processing it
  5760.     all DOS, BIOS, and DV API calls except those generating a task switch
  5761.       are valid in handler
  5762. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  5763. --------Q-2FDE06-----------------------------
  5764. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  5765.     AX = DE06h
  5766.     BX = mapping context of process containing task
  5767.     DX = handle of new task
  5768. Notes:    driver should pass this call to previous handler after processing it
  5769.     all DOS, BIOS, and DV API calls are valid in handler
  5770. --------Q-2FDE07-----------------------------
  5771. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  5772.     AX = DE07h
  5773.     BX = mapping context of process containing task
  5774.     DX = handle of task
  5775. Notes:    driver should pass this call to previous handler before processing it
  5776.     all DOS, BIOS, and DV API calls except those generating a task switch
  5777.       are valid in handler
  5778. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  5779. --------Q-2FDE08-----------------------------
  5780. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  5781.     AX = DE08h
  5782.     BX = mapping context of task being switched from (see INT 15/AX=1016h)
  5783.     DX = handle of task being switched from
  5784. Notes:    invoked prior to task swap, interrupts, etc
  5785.     driver should pass this call to previous handler after processing it
  5786. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  5787. --------Q-2FDE09-----------------------------
  5788. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  5789.     AX = DE09h
  5790.     BX = mapping context of task being switched to (see INT 15/AX=1016h)
  5791.     DX = handle of task being switched to
  5792. Notes:    state is restored except for interrupts
  5793.     driver should pass this call to previous handler before processing it
  5794. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  5795. --------Q-2FDE0A-----------------------------
  5796. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  5797.     AX = DE0Ah
  5798.     BX = mapping context of task receiving focus
  5799.     DX = handle of running task
  5800. Notes:    driver should pass this call to previous handler before processing it
  5801.     this call often occurs inside a keyboard interrupt
  5802.     DV 2.42 does not provide this call to XDI handlers running inside a
  5803.       window; instead, it directly calls the INT 2F handler which was
  5804.       active at the time DV started
  5805. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  5806. --------Q-2FDE0B-----------------------------
  5807. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  5808.     AX = DE0Bh
  5809.     BX = mapping context of DESQview system task
  5810.     CX = number of system memory paragraphs required for the use of all
  5811.         XDI drivers (DV will add this to system memory in DVP buffer)
  5812.     DX = handle of DESQview system task
  5813.     SI = mapping context of new process if it starts
  5814.     ES:DI -> DVP buffer
  5815. Return: CX incremented as needed
  5816. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  5817.     driver should pass this call to previous handler before processing it
  5818. --------Q-2FDE0C-----------------------------
  5819. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  5820.     AX = DE0Ch
  5821.     BX = mapping context of task being swapped out (see INT 15/AX=1016h)
  5822.     DX = handle of DESQview system task
  5823. Note:    driver should pass this call to previous handler after processing it
  5824. --------Q-2FDE0D-----------------------------
  5825. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  5826.     AX = DE0Dh
  5827.     BX = mapping context of process just swapped in (see INT 15/AX=1016h)
  5828.     DX = handle of DESQview system task
  5829. Note:    driver should pass this call to previous handler before processing it
  5830. --------Q-2FDE0E-----------------------------
  5831. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  5832.     AX = DE0Eh
  5833.     BX = mapping context of DESQview system task
  5834.     DX = handle of DESQview system task
  5835.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  5836. Note:    driver should pass this call to previous handler after processing it
  5837. --------Q-2FDE0F-----------------------------
  5838. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  5839.     AX = DE0Fh
  5840. Note:    DESQview 2.50+ calls this function just before it completes its
  5841.       initialization.  At the time of the call, DESQview has not yet
  5842.       changed any interrupt vectors
  5843. SeeAlso: AX=DE02h
  5844. --------Q-2FDE10-----------------------------
  5845. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  5846.     AX = DE10h
  5847.     BX = mapping context of process (see INT 15/AX=1016h)
  5848.     DX = task handle of process
  5849. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  5850.       similar to AX=DE07h but allows the XDI handler to make calls which
  5851.       cause context switches
  5852. SeeAlso: AX=DE06h,AX=DE07h
  5853. --------c-2FDF00-----------------------------
  5854. INT 2F - HyperWare programs - INSTALLATION CHECK
  5855.     AX = DF00h
  5856.     BX = product code
  5857.         4248h ('BH') HyperStb
  5858.         4448h ('DH') HyperDisk v4.20+
  5859.         4B48h ('KH') HyperKey
  5860.         5348h ('SH') HyperScreen
  5861.     CX = 0000h
  5862.     DX = 0000h
  5863. Return: AL = status
  5864.         00h not installed
  5865.         FFh multiplex number in use
  5866.         CX = 5948h ('YH') if selected product installed
  5867.         ---HyperDisk---
  5868.         BX = code segment of resident portion
  5869.         DX = HyperDisk local data version
  5870. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5871. Note:    AH=DFh is the default; if it is already in use by some other program,
  5872.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5873. SeeAlso: INT 13/AX=8EEDh
  5874. Index:    installation check;HyperDisk|installation check;HyperStb
  5875. Index:    installation check;HyperKey|installation check;HyperScreen
  5876. Index:    HyperDisk;installation check|HyperStb;installation check
  5877. Index:    HyperKey;installation check|HyperScreen;installation check
  5878. --------c-2FDF01BX4448-----------------------
  5879. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  5880.     AX = DF01h
  5881.     BX = 4448h ('DH')
  5882. Return: AX = 0000h if function supported
  5883.         BX = number of cache buffers in use
  5884.         CX = number of cache buffers which have been modified
  5885.         DL = caching flags (see below)
  5886. Note:    AH=DFh is the default; if it is already in use by some other program,
  5887.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5888. SeeAlso: AX=DF00h,AX=DF02h
  5889.  
  5890. Bitfields for caching flags:
  5891. Bit(s)    Description
  5892.  0    staged writes enabled for floppy disks
  5893.  1    staged writes enabled for hard disks
  5894.  2    writes verified on floppy disks
  5895.  3    writes verified on hard disks
  5896.  4    reserved (0)
  5897.  5    reserved (0)
  5898.  6    floppy caching enabled
  5899.  7    all caching functions enabled
  5900. --------c-2FDF02BX4448-----------------------
  5901. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  5902.     AX = DF02h
  5903.     BX = 4448h ('DH')
  5904.     DL = new caching flags (see AX=DF01h)
  5905. Return: AX = 0000h if supported
  5906.         BX = number of cache buffers in use
  5907.         CX = number of cache buffers which have been modified
  5908.         DL = previous caching flags (see AX=DF01h)
  5909. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5910. Note:    AH=DFh is the default; if it is already in use by some other program,
  5911.       HyperWare programs then scan multiplex numbers from C0h through FFh
  5912. SeeAlso: AX=DF00h,AX=DF01h
  5913. --------U-2FE000-----------------------------
  5914. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  5915.     AX = E000h
  5916. Return: AX = 4A52h ("JR") if present
  5917. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  5918.       apparent DOS version analogously to MS-DOS SETVER
  5919. Note:    this installation check differs from the usual one of returning AL=FFh
  5920. SeeAlso: AX=E001h,INT 21/AH=52h
  5921. --------K-2FE000DX5354-----------------------
  5922. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  5923.     AX = E000h
  5924.     DX = 5354h ("ST")
  5925. Return: AL = FFh if installed
  5926.         BX = version (BH = major, BL = BCD minor)
  5927.         DX = segment of resident code
  5928. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  5929. --------U-2FE001-----------------------------
  5930. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  5931.     AX = E001h
  5932. Return: AH = major version
  5933.     AL = minor version
  5934. SeeAlso: AX=E000h
  5935. --------U-2FE002-----------------------------
  5936. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  5937.     AX = E002h
  5938. Return: AL = FFh if successful
  5939.         BH = major DOS version
  5940.         BL = minor DOS version
  5941.         CH = DOS version flag
  5942.         CL = OEM number
  5943.         DH = major DR-DOS version number (FFh if unknown)
  5944.         DL = minor DR-DOS version number (FFh if unknown)
  5945. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  5946. --------U-2FE003-----------------------------
  5947. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  5948.     AX = E003h
  5949.     BH = new major DOS version
  5950.     BL = new minor DOS version
  5951.     CH = new DOS version flag
  5952.     CL = new DOS revision number
  5953.     DH = new OEM number
  5954. SeeAlso: AX=E002h
  5955. --------U-2FE004-----------------------------
  5956. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  5957.     AX = E004h
  5958. Return: AL = FFh if successful
  5959. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  5960. --------U-2FE005-----------------------------
  5961. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  5962.     AX = E005h
  5963. Return: AL = FFh if successful
  5964. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  5965. --------U-2FE006-----------------------------
  5966. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  5967.     AX = E006h
  5968. Return: AL = FFh if successful
  5969.         BL = status
  5970.         01h resident and active
  5971.         02h resident and inactive
  5972. --------U-2FE007-----------------------------
  5973. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  5974.     AX = E007h
  5975. Return: AL = FFh if successful
  5976.         BL = status
  5977.         00h if TaskMAX not loaded before SETDRVER
  5978.         FFh if TaskMAX was loaded before SETDRVER
  5979. SeeAlso: AX=E003h
  5980. --------U-2FE0-------------------------------
  5981. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  5982.     AH = E0h
  5983.     AL = 08h-10h
  5984. --------K-2FE100-----------------------------
  5985. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  5986.     AX = E100h
  5987. Return: AX = 0001h if installed
  5988.         DS:SI -> ASCIZ hotkey name
  5989.         DS:DI -> ASCIZ recording filename
  5990. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  5991.       by P2 Enterprises
  5992. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  5993. Index:    hotkeys;Phantom2
  5994. --------K-2FE101-----------------------------
  5995. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  5996.     AX = E101h
  5997.     BX = function mask (see below)
  5998.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  5999.     DS:DX -> ASCIZ filespec if BX bit 7 set
  6000. SeeAlso: AX=E100h
  6001. Index:    hotkeys;Phantom2
  6002.  
  6003. Bitfields for function mask
  6004. Bit(s)    Description
  6005.  0    record
  6006.  1    play
  6007.  2    QuickPlay
  6008.  3    loop
  6009.  4    mode display toggle
  6010.  5    sound toggle
  6011.  6    set hotkey
  6012.  7    set filespec
  6013. --------K-2FE102-----------------------------
  6014. INT 2F - Phantom2 v1.1+ - UNINSTALL
  6015.     AX = E102h
  6016. Return: AX = status
  6017.         0001h removal successful
  6018.         0002h not installed as TSR
  6019.         FFFFh disabled but not removed
  6020. SeeAlso: AX=E100h
  6021. --------K-2FE103-----------------------------
  6022. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  6023.     AX = E103h
  6024. Return: AX = 0001h
  6025. SeeAlso: AX=E100h
  6026. --------K-2FE300-----------------------------
  6027. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  6028.     AX = E300h
  6029. Return: AL = 00h not installed
  6030.          FEh if installed but suspended (v3.0+)
  6031.          FFh installed
  6032. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  6033. Note:    E3h is the default function number, but can be set to any value from
  6034.       C0h to FFh
  6035. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  6036. SeeAlso: AX=E307h,INT 66"Newkey"
  6037. --------V-2FE300-----------------------------
  6038. INT 2F - Blank - INSTALLATION CHECK
  6039.     AX = E300h
  6040. Return: AL = FFh if installed
  6041.         ES = resident code segment
  6042. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  6043. Note:    AH=E3h is the default, which may be reconfigured by the installation
  6044.       program in the registered version
  6045. SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
  6046. Index:    screen saver;Blank
  6047. --------K-2FE301-----------------------------
  6048. INT 2F U - ANARKEY.COM v2+ - GET ???
  6049.     AX = E301h
  6050. Return: DX:BX -> ???
  6051. SeeAlso: AX=E300h
  6052.  
  6053. Format of returned data structure for ANARKEY v2.0:
  6054. Offset    Size    Description
  6055.  -7   7 BYTEs    signature ('ANARKEY')
  6056.  00h    WORD    ??? (I see 0001h in v2.0)
  6057.  02h    WORD    ??? (I see 0001h in v2.0)
  6058.  04h    WORD    ??? (I see 0 in v2.0)
  6059.  06h    WORD    PSP segment of next program loaded
  6060.  
  6061. Format of returned data structure for ANARKEY v3+:
  6062. Offset    Size    Description
  6063.  -1    BYTE    multiplex number
  6064.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  6065.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  6066.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  6067.  05h    WORD    PSP segment of next program loaded
  6068. --------K-2FE302-----------------------------
  6069. INT 2F U - ANARKEY.COM v3+ - ???
  6070.     AX = E302h
  6071.     BL = ???
  6072. Return: ???
  6073. SeeAlso: AX=E300h
  6074. --------K-2FE303-----------------------------
  6075. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  6076.     AX = E303h
  6077.     BL = function
  6078.         01h toggle insert mode
  6079.         02h display contents of history buffer
  6080.         03h write history buffer to file
  6081.         ES:DX -> file name
  6082.         04h clear history buffer
  6083.         05h undefine all aliases
  6084.         06h show aliases
  6085.         07h list programs using Unix switchar
  6086.         08h jump to bottom of history buffer
  6087.         09h (v4.0) add string to history buffer
  6088.         ES:DX -> ASCIZ string
  6089.         0Ah (v4.0) ???
  6090.         ES:DX -> ???
  6091.         0Bh (v4.0) copy string to edit buffer for use as next input line
  6092.         ES:DX -> ASCIZ string
  6093.         0Ch (v4.0) ???
  6094.         0Dh (v4.0) copy ??? to ???
  6095.         0Eh (v4.0) ???
  6096.         0Fh (v4.0) ???
  6097.         10h (v4.0) set ??? flag
  6098.         11h (v4.0) display error message about running in EMS under Windows
  6099. Return: ???
  6100. SeeAlso: AX=E300h
  6101. --------K-2FE304-----------------------------
  6102. INT 2F U - ANARKEY.COM v2+ - ???
  6103.     AX = E304h
  6104.     BL = ???
  6105. Return: ???
  6106. SeeAlso: AX=E300h
  6107. --------K-2FE305-----------------------------
  6108. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  6109.     AX = E305h
  6110.     BL = new state
  6111.         01h suspended
  6112.         00h enabled
  6113. SeeAlso: AX=E300h
  6114. --------K-2FE306-----------------------------
  6115. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6116.     AX = E306h
  6117. Return: AX = ???
  6118. SeeAlso: AX=E300h
  6119. --------K-2FE307-----------------------------
  6120. INT 2F U - ANARKEY.COM v4.0 - GET ???
  6121.     AX = E307h
  6122. Return: AX = ???
  6123.     BL = ???
  6124. SeeAlso: AX=E300h
  6125. --------l-2FE44D-----------------------------
  6126. INT 2F - NDOS - API
  6127.     AX = E44Dh
  6128. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  6129.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  6130.       check returns AX=44EEh instead of AX=44DDh
  6131. SeeAlso: AX=D44Dh,AX=E44Eh
  6132. --------l-2FE44EBX0000-----------------------
  6133. INT 2F C - NDOS - AWAITING USER INPUT
  6134.     AX = E44Eh
  6135.     BX = 0000h NDOS is ready to display prompt
  6136.        = 0001h NDOS has displayed the prompt, about to accept user input
  6137. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  6138. SeeAlso: AX=E44Dh
  6139. --------E-2FED00-----------------------------
  6140. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  6141.     AX = ED00h
  6142.     BL = DOS extender
  6143.         01h 286dosx v1.3+ (Software Development Kit)
  6144.         02h 286dosx v1.3+ (Run-Time Kit)
  6145.         03h 386dosx v4.0+ (SDK)
  6146.         04h 386dosx v4.0+ (RTK)
  6147. Return: AL = status
  6148.         00h not installed
  6149.         FFh installed
  6150.         SI = 5048h ("PH")
  6151.         DI = 4152h ("AR")
  6152.         CH = major version number
  6153.         CL = minor version number
  6154.         DX = flags
  6155.             bit 0: running under DPMI
  6156.             bit 1: running under Phar Lap VMM
  6157.         if running under DPMI:
  6158.             BX = DPMI version (BH = major, BL = minor)
  6159. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  6160. --------E-2FED03-----------------------------
  6161. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  6162.     AX = ED03h
  6163.     CX = real-mode code segment
  6164.     DX = real-mode data segment
  6165. Return: CF clear if successful
  6166.         CX = protected-mode code segment selector
  6167.         DX = protected-mode data segment selector
  6168.         ES:DI -> real-mode entry point for calling protected-mode functions
  6169.             (see INT 21/AX=250Dh)
  6170.     CF set on error
  6171.         AX = error code
  6172.         0008h unable to allocate LDT descriptors
  6173. --------E-2FED80-----------------------------
  6174. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  6175.     AX = ED80h
  6176.     BL = DOS extender ID (see AX=ED00h)
  6177.     SI = 5048h ("PH")
  6178.     DI = 4152h ("AR")
  6179.     ???
  6180. Return: ???
  6181. --------y-2FEE00-----------------------------
  6182. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  6183.     AX = EE00h
  6184. Return: AL = FFh if installed
  6185. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  6186. SeeAlso: INT 21/AH=40h"NB.SYS"
  6187. --------U-2FEE00-----------------------------
  6188. INT 2F - XVIEW - INSTALLATION CHECK
  6189.     AX = EE00h
  6190. Return: AX = 00FFh if installed
  6191. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  6192. --------N-2FEE00-----------------------------
  6193. INT 2F - WEB v4.02 - INSTALLATION CHECK
  6194.     AX = EE00h
  6195. Return: AL = status
  6196.         00h not installed
  6197.         FFh installed
  6198. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6199. SeeAlso: AH=EEh"WEB",AX=EEF0h
  6200. --------U-2FEE01-----------------------------
  6201. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  6202.     AX = EE01h
  6203.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  6204. Return: AX = status (see below)
  6205. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  6206.       database; the current database is searched first
  6207. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  6208.  
  6209. Values for status:
  6210.  0000h    successful
  6211.  00F1h    unknown subfunction
  6212.  00F2h    unable to pop up
  6213. --------U-2FEE02-----------------------------
  6214. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  6215.     AX = EE02h
  6216.     DX = physical page number or anchor page number (see below)
  6217. Return: AX = status (see AX=EE01h)
  6218. Note:    physical page numbers are assigned by the hypertext compiler, and
  6219.       will change if a page is inserted in the middle
  6220. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  6221.  
  6222. Values for anchor page number:
  6223.  FFEAh    _Credits
  6224.  FFECh    _SearchTopics
  6225.  FFEDh    _SearchText
  6226.  FFF0h    _ManualList
  6227.  FFF5h    _HelpOnHelp
  6228.  FFF8h    _HomePage
  6229.  FFF9h    _IndexPage
  6230. --------U-2FEE03-----------------------------
  6231. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  6232.     AX = EE03h
  6233.     DS:DX -> data packet (see below)
  6234. Return: AX = status (see AX=EE01h)
  6235. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  6236.  
  6237. Format of data packet:
  6238. Offset    Size    Description
  6239.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  6240.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  6241.  08h    WORD    page number (0000h if keyword used)
  6242.  0Ah  6 BYTEs    reserved
  6243. --------U-2FEE04-----------------------------
  6244. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  6245.     AX = EE04h
  6246. Return: AX = status (see AX=EE01h)
  6247. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  6248. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  6249. --------U-2FEE05-----------------------------
  6250. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  6251.     AX = EE05h
  6252. Return: AX = status (see AX=EE01h)
  6253. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  6254. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  6255. --------U-2FEE06-----------------------------
  6256. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  6257.     AX = EE06h
  6258. Return: AX = status (see also AX=EE01h)
  6259.         0001h specified filename is not an xText database
  6260.         0002h no databases found
  6261.         0003h bad data in file
  6262.         0004h memory shortage
  6263.         0005h unable to open the requested file
  6264.         0007h invalid page number for file
  6265. Note:    although this call is not required, the exit code can alert the
  6266.       caller to problems; if the call is not made, the program should
  6267.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  6268.       and should not get keyboard input or attempt disk accesses during
  6269.       the delay
  6270. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  6271. --------N-2FEE-------------------------------
  6272. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  6273.     AH = EEh
  6274.     AL = module ID (see below)
  6275. Return: AX = 0000h if installed
  6276.         ES:DI -> far entry point for module-specific API calls (see below)
  6277. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6278. SeeAlso: AX=EE00h"WEB"
  6279.  
  6280. Values for module ID:
  6281.  10h    server module (SERVER.EXE)
  6282.  20h    client module (CLIENT.EXE)
  6283.  30h    mail module (MAIL.EXE)
  6284.  40h    spooler (PCSPOOL.EXE)
  6285.  50h    kernel module (KERNEL.EXE)
  6286.  60h    SAP module (KERNEL.EXE)
  6287.  70h    resident station manager (SM.EXE)
  6288.  90h    router module (ROUTER.EXE)
  6289.  
  6290. Call server module entry point with:
  6291.     BX = function
  6292.         0000h remove server module
  6293.         Return: AX = status (0000h if successful, else WEB error code)
  6294.         0001h create SYSINFO file
  6295.         Note:    the SYSINFO file is used by the station manager when
  6296.               displaying info for a particular station
  6297.         0002h get server object table
  6298.         Return: CX = number of server objects
  6299.             ES:DI -> server object table
  6300.         Note:    server objects include drives and devices that the
  6301.               server module controls
  6302.         0003h get server variables
  6303.         Return: ES:DI -> server variables
  6304.  
  6305. Call client module entry point with:
  6306.     BX = function
  6307.         0000h remove client module
  6308.         Return: AX = status (0000h if successful, else WEB error code)
  6309.         0001h decrement client-only flag
  6310.         0002h increment client-only flag
  6311.         0005h set device capture
  6312.         Note:    decrements DeviceOutput flag, telling the spooler that
  6313.               it may trap device output again
  6314.         0006h clear device capture
  6315.         Note:    increments DeviceOutput flag, telling the spooler that
  6316.               it should not trap device output (this is used
  6317.               internally by the spooler to prevent it from trapping
  6318.               its own output)
  6319.         0007h get client debug pointer
  6320.         Return: ES:DI -> client debug data structure (see below)
  6321.         0008h get root drive
  6322.         Return: AL = WEB startup drive
  6323.         0009h get maximum possible drive/device redirections
  6324.         Return: AL = maximum drive redirections
  6325.             CH = maximum LPTx redirections
  6326.             CL = maximum COMx redirections
  6327.         000Ah suspend client
  6328.         Return: AX = previous value of Suspend flag
  6329.         000Bh resume client
  6330.         Return: AX = previous value of Suspend flag
  6331.         000Ch get instance data
  6332.         CX = maximum number of structures in array
  6333.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  6334.             (see below)
  6335.         Return: CX = number of structures actually returned
  6336.         Note:    used internally by WEB4WIN
  6337.  
  6338. Call mail module entry point with:
  6339.     BX = function
  6340.         0000h remove mail module
  6341.         Return: AX = status (0000h successful, else WEB error code)
  6342.         0001h set mail poll
  6343.         Note:    schedules the WEB mail module
  6344.         0002h set mail notify
  6345.         Note:    sets the Notify flag, which determines whether the
  6346.               user will be notified when mail is received
  6347.         0003h clear mail notify
  6348.         Note:    clears the Notify flag, which determines whether the
  6349.               user will be notified when mail is received
  6350.         0004h check whether new mail has arrived
  6351.         Return: AL = new mail status
  6352.                 00h no new mail since last call
  6353.                 else new mail has arrived
  6354.         Note:    also clears the new-mail flag after retrieving it
  6355.         0005h send notify
  6356.         ES:DI -> name of WEB user to be notified
  6357.         0006h get post office
  6358.         Return: ES:DI -> full network path of Post Office subdirectory
  6359.  
  6360. Call spooler entry point with:
  6361.     BX = function
  6362.         0000h remove PCSpool module
  6363.         Return: AX = status (0000h successful, else WEB error code)
  6364.         0001h set spooler poll
  6365.         Note:    schedules the WEB spooler
  6366.         0002h check spooler changed
  6367.         Return:    AX = 0000h
  6368.         Note:    this call is a NOP in current versions of WEB
  6369.  
  6370. Call kernel entry point with:
  6371.     BX = function
  6372.         0000h remove kernel module
  6373.         Return: AX = status (0000h successful, else WEB error code)
  6374.         0001h set kernel ^S filter
  6375.         DL = new state (00h don't filter ^S, nonzero do filter)
  6376.         0002h get kernel data area
  6377.         Return: ES:DI -> kernel data area
  6378.         0003h display dialog box
  6379.         CL = dialog box type
  6380.             00h password
  6381.             01h E-Note received notification
  6382.             02h Novell login
  6383.             03h general notification
  6384.         DL = number of rows to display
  6385.         ES:SI -> array of far pointers to rows to be displayed
  6386.         ES:DI -> Pascal-style input buffer
  6387.         Return: AX = status (0000h successful, else error code)
  6388.         0004h kernel service events
  6389.         0005h get kernel's in-critical-section flag
  6390.         Return: ES:DI -> kernel InCriticalSection flag
  6391.         0006h schedule DOS event
  6392.         AL = directive
  6393.             00h do not ignore WEB ExtraBusy flag
  6394.             01h ignore ExtraBusy flag
  6395.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6396.         ES:SI -> WEB AES Event Control Block (ECB) (see below)
  6397.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  6398.               one used by IPX; this call schedules a special ECB
  6399.               to be executed at a later time.  Unlike IPX ECBs,
  6400.               the timeout must be set explicitly by the caller
  6401.             this function also calls function 0004h
  6402.         0007h check busy
  6403.         AL = directive
  6404.             00h do not ignore WEB ExtraBusy flag
  6405.             01h ignore ExtraBusy flag
  6406.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  6407.         Return: AX = status (0000h not busy, else busy)
  6408.         0008h set keyboard intercept
  6409.         Note:    currently a NOP which returns immediately
  6410.         0009h get keyboard intercept
  6411.         Note:    currently a NOP which returns immediately
  6412.         000Ah get dialog flags
  6413.         Return: ES:DI -> kernel dialog flags (see below)
  6414.         000Bh get network path
  6415.         Return: ES:DI -> fully-qualified network path of file where
  6416.                 the screen is stored on Dialog calls
  6417.         000Ch kernel alternate dialog
  6418.         CL = dialog box type
  6419.             00h password
  6420.             01h E-Note received notification
  6421.             02h Novell login
  6422.             03h general notification
  6423.         DL = number of rows to display
  6424.         ES:SI -> array of far pointers to rows to be displayed
  6425.         ES:DI -> Pascal-style input buffer
  6426.         Return: AX = status (0000h successful, else error code)
  6427.         Note:    this function is identical to function 0003h except
  6428.               that it does not notify WEB4WIN of the impending
  6429.               dialog request
  6430.         000Dh get machine/operating system type
  6431.         Return: AX = machine/operating system type
  6432.                 01h IBM PC, MS-DOS
  6433.                 02h IBM PC, DOSV (Japanese)
  6434.                 03h NEC PC-9800, JDOS (Japanese)
  6435.                 04h IBM PC, Korean DBC DOS
  6436.  
  6437. Format of client debug data structure:
  6438. Offset    Size    Description
  6439.  00h    WORD    total files
  6440.  02h    WORD    files free
  6441.  04h    WORD    no files
  6442.  06h    WORD    minimum files
  6443.  08h    WORD    total FCBs
  6444.  0Ah    WORD    total safe FCBs
  6445.  0Ch    WORD    FCBs in use
  6446.  0Eh    WORD    wrong FCB
  6447.  10h    WORD    compressed
  6448.  12h    WORD    retransmits
  6449.  
  6450. Format of WIN_INSTANCE_DATA structure:
  6451. Offset    Size    Description
  6452.  00h    DWORD    real-mode pointer to data to be instanced
  6453.  04h    WORD    size of data to be instanced
  6454.  
  6455. Format of WEB AES Event Control Block:
  6456. Offset    Size    Description
  6457.  00h    DWORD    link address
  6458.  04h    WORD    ESR address
  6459.  08h    BYTE    InUse flag
  6460.  09h    BYTE    completion code
  6461.  0Ah  3 BYTEs    reserved
  6462.  0Dh    WORD    timeout
  6463.  0Fh    BYTE    IgnoreExtra flag
  6464.  10h    WORD    PSP
  6465.  12h    DWORD    DTA
  6466.  16h    WORD    AX value for DOS critical information
  6467.  18h    WORD    BX value for DOS critical information
  6468.  1Ah    WORD    CX value for DOS critical information
  6469.  1Ch    WORD    DX value for DOS critical information
  6470.  
  6471. Values for kernel dialog flags:
  6472.  01h    dialog will timeout
  6473.  02h    display stars instead of entered keystrokes
  6474. --------N-2FEEF0-----------------------------
  6475. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  6476.     AX = EEF0h
  6477.     BX = notification function ID (see below)
  6478. Return: varies by notification function
  6479. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  6480. Note:    the notification functions are used internally by WEB modules to notify
  6481.       other modules and external programs of actions or event, and should
  6482.       never be called by an application
  6483. SeeAlso: AX=EE00h"WEB"
  6484.  
  6485. Values for Notification Function ID:
  6486.  00h    node added
  6487.  01h    node deleted
  6488.  02h    dial attempt
  6489.  03h    dial failed
  6490.  04h    file close
  6491.  05h    close connection
  6492.  07h    check Windows mode
  6493.  20h    link up
  6494.  21h    link down
  6495. --------K-2FF000-----------------------------
  6496. INT 2F U - 4MAP - INSTALLATION CHECK
  6497.     AX = F000h
  6498. Return: AX = 00FFh
  6499. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6500. Note:    returns AX=00FFh for any value of AL not listed here
  6501. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  6502. --------K-2FF001-----------------------------
  6503. INT 2F U - 4MAP - GET KEY MAPPINGS
  6504.     AX = F001h
  6505. Return: ES:BX -> key mappings
  6506. SeeAlso: AX=F000h
  6507. --------K-2FF002-----------------------------
  6508. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6509.     AX = F002h
  6510.     BL = character to insert
  6511. Return: AX = status
  6512.         0000h successful
  6513.         0001h buffer full
  6514. SeeAlso: AX=F000h,AX=F003h
  6515. --------K-2FF003-----------------------------
  6516. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  6517.     AX = F003h
  6518.     BL = character to insert
  6519. Return: AX = status
  6520.         0000h successful
  6521.         0001h buffer full
  6522. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  6523. SeeAlso: AX=F000h,AX=F002h
  6524. --------m-2FF1-------------------------------
  6525. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  6526.     AH = F1h
  6527.     AL <> F1h
  6528. Return: AL = F1h if installed
  6529. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  6530.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  6531.       TSR at a time is brought back into memory at the user's request.
  6532. --------E-2FF100-----------------------------
  6533. INT 2F - DOS EXTENDER INSTALLATION CHECK
  6534.     AX = F100h
  6535. Return: AL = FFh if DOS extender present
  6536.         SI = 444Fh ("DO")
  6537.         DI = 5358h ("SX")
  6538. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  6539. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  6540. --------W-2FF200-----------------------------
  6541. INT 2F - WINX - INSTALLATION CHECK
  6542.     AX = F200h
  6543. Return: AX = 00FFh if installed
  6544. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  6545.       launch Windows applications from a DOS Box; it was published in
  6546.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  6547.       (Addison-Wesley) and should not be confused with the Windows driver
  6548.       of the same name which is part of the DESQview/X package
  6549. --------W-2FF201-----------------------------
  6550. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  6551.     AX = F201h
  6552. Return: AX = FFFFh if WINX is busy processing a different request
  6553.        = 0000h if successful
  6554.         BX:CX = address of server buffer
  6555.  
  6556. Format of server buffer
  6557. Offset    Size    Description
  6558.  00h    BYTE    command/status
  6559.         00h buffer available
  6560.         01h buffer contains result
  6561.         02h change directory
  6562.         03h execute program
  6563.         FFh terminate windows portion of WINX
  6564.  01h  ? BYTEs    command (03h) or directory (02h)
  6565.   or
  6566.  01h    DWORD    result (01h)
  6567. --------W-2FF202-----------------------------
  6568. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  6569.     AX = F202h
  6570.     BX:CX -> directory
  6571. Return: AX = FFFFh if WINX is busy processing a different request
  6572.        = 0000h if successful
  6573. SeeAlso: AX=F200h,AX=F203h
  6574. --------W-2FF203-----------------------------
  6575. INT 2F - WINX - EXECUTE COMMAND
  6576.     AX = F203h
  6577.     BX:CX -> command
  6578. Return: AX = FFFFh if WINX is busy processing a different request
  6579.        = 0000h if successful
  6580. SeeAlso: AX=F200h,AX=F202h
  6581. --------G-2FF400-----------------------------
  6582. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  6583.     AX = F400h
  6584. Return: AL = 01h if installed
  6585. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  6586.       of PC Magazine; when run as a TSR it can determine which IRQs are
  6587.       used only when a device is active
  6588. SeeAlso: AX=F401h
  6589. --------G-2FF401CX5121-----------------------
  6590. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  6591.     AX = F401h
  6592.     CX = 5121h ('Q!')
  6593. Return: AX:DX -> hooked interrupt table (see below)
  6594. SeeAlso: AX=F400h
  6595.  
  6596. Format of hooked interrupt table:
  6597. Offset    Size    Description
  6598.  00h    BYTE    1Ch
  6599.  01h    DWORD    FINDIRQ's INT 1C handler
  6600.  05h    DWORD    original INT 1C handler
  6601.  09h    BYTE    28h
  6602.  0Ah    DWORD    FINDIRQ's INT 28 handler
  6603.  0Eh    DWORD    original INT 28 handler
  6604.  12h    BYTE    2Fh
  6605.  13h    DWORD    FINDIRQ's INT 2F handler
  6606.  17h    DWORD    original INT 2F handler
  6607. --------d-2FF700-----------------------------
  6608. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  6609.     AX = F700h
  6610. Return: AL = 00h not installed
  6611.          FFh installed
  6612. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  6613. --------d-2FF701-----------------------------
  6614. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  6615.     AX = F701h
  6616.     BX:CX = 32-bit count of 55ms timer ticks
  6617. --------d-2FF800CX4455-----------------------
  6618. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  6619.     AX = F800h
  6620.     CX = 4455h ("DU")
  6621.     DL = 45h ("E")
  6622. Return: AL = FFh if installed
  6623.         ES:BX -> ASCII signature "Universal Data Exchange"
  6624. Program: SuperStor is a disk-compression program by Addstor.
  6625. Note:    returns AX=0001h if AL is not 00h or 01h
  6626. SeeAlso: AX=1001h,AX=F801h
  6627. --------d-2FF801CX4455-----------------------
  6628. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  6629.     AX = F801h
  6630.     CX = 4455h ("DU")
  6631.     DL = 45h ("E")
  6632.     ES:BX = return address if successful
  6633. Return: at specified address if successfully removed from memory
  6634.     else
  6635.         AL = error code
  6636.         ???
  6637. Program: SuperStor is a disk-compression program by Addstor.
  6638. Note:    returns AX=0001h if AL is not 00h or 01h
  6639. SeeAlso: AX=1001h,AX=F800h
  6640. --------*-2FFB-------------------------------
  6641. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  6642.     AH = FBh
  6643. --------a-2FFB00-----------------------------
  6644. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  6645.     AX = FB00h
  6646. Return: AX = 00FFh if installed
  6647. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6648. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  6649. --------U-2FFB00-----------------------------
  6650. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  6651.     AX = FB00h
  6652. Return: AX = FFFFh if installed
  6653.         BX = version (BCD, BH=major, BL=minor)
  6654. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  6655. --------a-2FFB01-----------------------------
  6656. INT 2F U - AutoBraille v1.1A - ???
  6657.     AX = FB01h
  6658.     ???
  6659. Return: ???
  6660. --------U-2FFB01-----------------------------
  6661. INT 2F U - Jot-It! v1.50 - GET USER NAME
  6662.     AX = FB01h
  6663. Return: DX:BX -> ASCIZ user name
  6664. SeeAlso: AX=FB02h"Jot-It"
  6665. --------a-2FFB02-----------------------------
  6666. INT 2F U - AutoBraille v1.1A - ???
  6667.     AX = FB02h
  6668. Return: AH = ???
  6669.     AL = ???
  6670. --------U-2FFB02-----------------------------
  6671. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  6672.     AX = FB02h
  6673. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  6674. SeeAlso: AX=FB01h"Jot-It"
  6675. --------a-2FFB03-----------------------------
  6676. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  6677.     AX = FB03h
  6678. Return: AX = ???
  6679. --------U-2FFB03-----------------------------
  6680. INT 2F U - Jot-It! v1.50 - UNINSTALL
  6681.     AX = FB03h
  6682. Return: resident code removed from memory
  6683. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  6684.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  6685. SeeAlso: AX=FB00h"Jot-It"
  6686. --------a-2FFB-------------------------------
  6687. INT 2F U - AutoBraille v1.1A - SET ???
  6688.     AH = FBh
  6689.     AL = 04h-08h
  6690. Return: AX = 0000h
  6691. --------a-2FFB-------------------------------
  6692. INT 2F U - AutoBraille v1.1A - SET ???
  6693.     AH = FBh
  6694.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  6695. Return: ???
  6696. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6697. --------a-2FFB-------------------------------
  6698. INT 2F U - AutoBraille v1.1A - SET ???
  6699.     AH = FBh
  6700.     AL = 10h-1Fh
  6701.     ???
  6702. Return: ???
  6703. --------a-2FFB20-----------------------------
  6704. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  6705.     AX = FB20h
  6706.     BL = flags to set
  6707. SeeAlso: AX=FB21h"AutoBraille"
  6708. --------a-2FFB21-----------------------------
  6709. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  6710.     AX = FB21h
  6711.     BL = flags to clear
  6712. SeeAlso: AX=FB20h"AutoBraille"
  6713. --------a-2FFB22-----------------------------
  6714. INT 2F U - AutoBraille v1.1A - SET ???
  6715.     AX = FB22h
  6716.     BL = ???
  6717. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6718. --------a-2FFB28-----------------------------
  6719. INT 2F U - AutoBraille v1.1A - ???
  6720.     AX = FB28h
  6721.     BX = ???
  6722.     ???
  6723. Return: ???
  6724. SeeAlso: AX=FB29h"AutoBraille"
  6725. --------a-2FFB29-----------------------------
  6726. INT 2F U - AutoBraille v1.1A - ???
  6727.     AX = FB29h
  6728.     BX = ???
  6729.     ???
  6730. Return: ???
  6731. SeeAlso: AX=FB28h"AutoBraille"
  6732. --------a-2FFB-------------------------------
  6733. INT 2F U - AutoBraille v1.1A - SET ???
  6734.     AH = FBh
  6735.     AL = 2Bh-34h
  6736.     BX = ???
  6737. --------a-2FFB35-----------------------------
  6738. INT 2F U - AutoBraille v1.1A - SET ???
  6739.     AX = FB35h
  6740.     BL = ???
  6741. --------a-2FFB36-----------------------------
  6742. INT 2F U - AutoBraille v1.1A - SET ???
  6743.     AX = FB36h
  6744.     BL = ???
  6745. --------a-2FFB37-----------------------------
  6746. INT 2F U - AutoBraille v1.1A - SET ???
  6747.     AX = FB37h
  6748.     BL = ???
  6749. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  6750. --------E-2FFB42BX0001-----------------------
  6751. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  6752.     AX = FB42h
  6753.     BX = 0001h
  6754. Return: AX = version number??? (AL=major, AH=minor)
  6755.     CX = next-selector increment
  6756. ---BC2.0---
  6757.     ES:BX -> 80-byte buffer for ???
  6758.     DX = DPMI version
  6759. ---BC3.0---
  6760.     BX = ??? (0000h)
  6761.     DX = ???
  6762.     ES:SI -> list of valid selectors ???
  6763. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6764.       as version 1.000, while the version distributed with BC++ 3.0
  6765.       identifies itself as version 1.0; the former is 10864 bytes, the
  6766.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  6767.       the BC3.0 version also adds a DPMI host and DOS extender
  6768.     the BC++ 2.0 version displays an error message if called with BX
  6769.       values other than 0001h-0008h
  6770. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  6771. --------E-2FFB42BX0002-----------------------
  6772. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6773.     AX = FB42h
  6774.     BX = 0002h
  6775.     CX = size in bytes
  6776.     DX = bit flags
  6777.         bit 2: set to allocate DOS memory, clear for DPMI memory
  6778.     SI = selector of descriptor to be modified to access allocated memory
  6779.     DI = selector of a second descriptor to be modified
  6780. Return: AX = ??? or 0000h on error
  6781.     CX:DX = linear base address of DPMI memory block
  6782.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  6783.     ???
  6784. Note:    two segment descriptors may be set if a code and an aliased data
  6785.       segment are required; if only one descriptor is needed, SI should
  6786.       equal DI on entry
  6787. BUG:    when allocating DOS memory, the code computes the linear address by
  6788.       multiplying the segment number by 4 rather than shifting by 4
  6789. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6790. --------E-2FFB42BX0002-----------------------
  6791. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  6792.     AX = FB42h
  6793.     BX = 0002h
  6794.     ES:SI -> memory block info (see below)
  6795. Return: ???
  6796. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6797.       as version 1.000, while the version distributed with BC++ 3.0
  6798.       identifies itself as version 1.0; the former is 10864 bytes, the
  6799.       latter 22180 bytes.
  6800. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  6801.  
  6802. Format of memory block info:
  6803. Offset    Size    Description
  6804.  00h    WORD    flags
  6805.         bit 0: set if data segment rather than code segment
  6806.         bit 1: information valid
  6807.         bit 2: set if DOS memory block rather than DPMI memory block
  6808.         bit 4: ???
  6809.         bit 15: set if no LDT selectors for memory block???
  6810.  02h    DWORD    block size in bytes
  6811. ---DPMI memory block---
  6812.  06h    DWORD    DPMI memory block handle
  6813. ---DOS memory block---
  6814.  06h    WORD    real-mode segment of memory block
  6815.  08h    WORD    selector of memory block
  6816. ---
  6817.  0Ah    DWORD    linear address of memory
  6818.  0Eh    WORD    memory operation error code
  6819.         0008h no more free LDT descriptors
  6820. ---if flags bit 0 clear---
  6821.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  6822.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  6823. ---if flags bit 0 set---
  6824.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  6825.  12h    WORD    unused???
  6826. --------E-2FFB42BX0003-----------------------
  6827. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  6828.     AX = FB42h
  6829.     BX = 0003h
  6830. Return: DX:AX = size of largest free block in paragraphs
  6831.         0000h:0000h on error (BC3.0 version only)
  6832. Note:    AX and DX are destroyed on error, but no other error indicator is
  6833.       returned, under the BC++ 2.0 version of DPMILOAD
  6834. SeeAlso: AX=FB42h/BX=0002h
  6835. --------E-2FFB42BX0004-----------------------
  6836. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  6837.     AX = FB42h
  6838.     BX = 0004h
  6839.     DS:DX -> ASCIZ filename of protected-mode executable
  6840. Return: CX = selector of ??? or 0000h
  6841. ---BC3.0---
  6842.     DX = status (0000h,FFF4h,others???) (see below)
  6843. Note:    the filename may also be terminated by a CR rather than a NUL under the
  6844.       BC++ 3.0 version of DPMILOAD
  6845.  
  6846. Values for status:
  6847.  0000h    successful
  6848.  0001h    ??? failure
  6849.  0002h    invalid selector
  6850.  0004h    unknown error
  6851.  0008h    no more LDT descriptors available???
  6852.  FFDEh    unable to set descriptor
  6853.  FFDFh    unable to get segment base address
  6854.  FFE0h    ???
  6855.  FFF2h    invalid parameter value
  6856.  FFF4h    component of filename too long (name not in 8.3 format)
  6857.  FFF5h    pathname too long (>79 chars)
  6858.  FFF6h    ???
  6859.  FFF8h    ???
  6860.  FFF9h    index out of range
  6861.  FFFAh    ???
  6862.  FFFCh    invalid access to code segment???
  6863.  FFFEh    ???
  6864.  FFFFh    general error
  6865. --------E-2FFB42BX0005-----------------------
  6866. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  6867.     AX = FB42h
  6868.     BX = 0005h
  6869.     CX = selector of DPMILOAD data (see below)
  6870.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  6871. Return: DX = status (see AX=FB42h/BX=0004h)
  6872.         0000h successful
  6873.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6874.         else
  6875.         BX destroyed
  6876. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  6877.  
  6878. Format of DPMILOAD data:
  6879. Offset    Size    Description
  6880.  00h 12 BYTEs    ???
  6881.  0Ch    WORD    ??? bit flags
  6882.  0Eh 14 BYTEs    ???
  6883.  1Ch    WORD    number of memory control records
  6884.  1Eh 25 BYTEs    ???
  6885.  37h    BYTE    ??? bit flags
  6886.         bit 4: data valid???
  6887.  38h  4 BYTEs    ???
  6888.  3Ch    WORD    ???
  6889.  3Eh 12 BYTEs    ???
  6890.  46h    BYTE    ??? counter
  6891.  47h    BYTE    ???
  6892.  48h    BYTE    ???
  6893.  49h    BYTE    ???
  6894.  4Ah    WORD    ???
  6895.  4Ch  2 BYTEs    ???
  6896.  4Eh    WORD    offset of array of 64-byte memory control records
  6897.  52h    WORD    offset of name list (see below)
  6898.  54h  4 BYTEs    ???
  6899.  58h    WORD    offset of array of 6-byte objects
  6900.  5Ah  8 BYTEs    ???
  6901.  62h  9 BYTEs    ASCIZ name for ???
  6902.  6Bh  9 BYTEs    ASCIZ name for ???
  6903.     ???
  6904.  
  6905. Format of name list entry [array]:
  6906. Offset    Size    Description
  6907.  00h    BYTE    length of name (00h if end of array)
  6908.  01h  N BYTEs    name
  6909.  N+1    WORD    1-based index into array of unknown 6-byte objects
  6910.  
  6911. Format of 6-byte objects:
  6912. Offset    Size    Description
  6913.  00h    BYTE    ???
  6914.  01h    BYTE    ???
  6915.  02h    BYTE    ???
  6916.  03h    BYTE    1-based index of memory control record
  6917.  04h    WORD    ???
  6918.  
  6919. Format of memory control record:
  6920. Offset    Size    Description
  6921.  00h 20 BYTEs    memory block info (see AX=FB42h/BX=0002h)
  6922.  14h  6 BYTEs    ???
  6923.  1Ah    BYTE    ???
  6924.  1Bh  2 BYTEs    ???
  6925.  1Dh    BYTE    ??? bit flags
  6926.  1Eh 14 BYTEs    ???
  6927.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  6928.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  6929.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  6930.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  6931.  3Ch  4 BYTEs    ???
  6932. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  6933.       the pointers at offsets 34h and 38h
  6934. --------E-2FFB42BX0006-----------------------
  6935. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  6936.     AX = FB42h
  6937.     BX = 0006h
  6938.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6939.     DX = 1-based index into array of ??? 6-byte objects
  6940. Return: DX = status (see AX=FB42h/BX=0004h)
  6941.         0000h successful
  6942.         AX:BX -> ??? FAR function (called with two words on top of stk)
  6943.         else
  6944.         BX destroyed
  6945. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  6946. --------E-2FFB42BX0007-----------------------
  6947. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  6948.     AX = FB42h
  6949.     BX = 0007h
  6950.     CX = selector of ???
  6951. Return: ???
  6952. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6953.       as version 1.000, while the version distributed with BC++ 3.0
  6954.       identifies itself as version 1.0; the former is 10864 bytes, the
  6955.       latter 22180 bytes.
  6956. --------E-2FFB42BX0007-----------------------
  6957. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  6958.     AX = FB42h
  6959.     BX = 0007h
  6960.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  6961.     ???
  6962. Return: DX = status (see AX=FB42h/BX=0004h)
  6963.         0000h successful
  6964.         AX = ???
  6965. --------E-2FFB42BX0008-----------------------
  6966. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6967.     AX = FB42h
  6968.     BX = 0008h
  6969.     CX = bit flags
  6970.         bit 2: set if DPMI memory, clear if DOS memory
  6971.     DX = selector of DOS memory block
  6972.     SI:DI = handle of DPMI memory block
  6973. Return: DX = 0000h on error, unchanged if succcessful
  6974. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  6975.       as version 1.000, while the version distributed with BC++ 3.0
  6976.       identifies itself as version 1.0; the former is 10864 bytes, the
  6977.       latter 22180 bytes.
  6978. SeeAlso: AX=FB42h/BX=0002h
  6979. --------E-2FFB42BX0008-----------------------
  6980. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  6981.     AX = FB42h
  6982.     BX = 0008h
  6983.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6984. Return: ???
  6985. SeeAlso: AX=FB42h/BX=0009h
  6986. --------E-2FFB42BX0009-----------------------
  6987. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  6988.     AX = FB42h
  6989.     BX = 0009h
  6990.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  6991.     ???
  6992. Return: ???
  6993. SeeAlso: AX=FB42h/BX=0008h"3.0"
  6994. --------E-2FFB42BX000A-----------------------
  6995. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  6996.     AX = FB42h
  6997.     BX = 000Ah
  6998.     CX = 0001h
  6999.     DX = ???
  7000.     SI = ???
  7001. Return: after user exits subshell
  7002. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  7003.       function is not available in protected mode.
  7004.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  7005.       version also adds a DPMI host and DOS extender.
  7006. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  7007. --------E-2FFB42BX000B-----------------------
  7008. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  7009.     AX = FB42h
  7010.     BX = 000Bh
  7011. --------E-2FFB42BX000C-----------------------
  7012. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  7013.     AX = FB42h
  7014.     BX = 000Ch
  7015.     ES:SI -> memory block info ??? (see AX=FB42h/BX=0002h"3.0")
  7016. Return: DX = status???
  7017. SeeAlso: AX=FB42h/BX=000Fh
  7018. --------E-2FFB42BX000D-----------------------
  7019. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  7020.     AX = FB42h
  7021.     BX = 000Dh
  7022.     CX = number of words to copy from protected-mode to real mode stack
  7023.     DL = interrupt number
  7024.     DH = flags
  7025.         bit 0: reset the interrupt controller and A20 line
  7026.     ES:DI -> real-mode call structure (see INT 31/AX=0300h)
  7027. Return: CX = status
  7028.         0000h successful
  7029.         0001h failed
  7030. SeeAlso: INT 31/AX=0300h
  7031. --------E-2FFB42BX000E-----------------------
  7032. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7033.     AX = FB42h
  7034.     BX = 000Eh
  7035.     DS:DX -> ASCIZ or CR-terminated name of ???
  7036. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) corresponding to
  7037.         name, 0000h on error
  7038. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  7039. --------E-2FFB42BX000F-----------------------
  7040. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  7041.     AX = FB42h
  7042.     BX = 000Fh
  7043.     ES:SI -> memory block info (see AX=FB42h/BX=0002h"3.0")
  7044. Return: ???
  7045. SeeAlso: AX=FB42h/BX=000Ch
  7046. --------E-2FFB42BX0010-----------------------
  7047. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  7048.     AX = FB42h
  7049.     BX = 0010h
  7050.     DX = segment number
  7051. Return: CX = status (see also AX=FB42h/BX=0004h)
  7052.         0000h successful
  7053.         DX = selector number for descriptor
  7054.         0008h failed
  7055. SeeAlso: AX=FB42h/BX=0023h
  7056. --------E-2FFB42BX0011-----------------------
  7057. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7058.     AX = FB42h
  7059.     BX = 0011h
  7060.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7061.     ???
  7062. Return: DX = status (see also AX=FB42h/BX=0004h)
  7063.         0000h successful
  7064.         AX:BX -> ??? name
  7065.         0002h invalid selector
  7066.         FFFEh ??? error
  7067. --------E-2FFB42BX0012-----------------------
  7068. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7069.     AX = FB42h
  7070.     BX = 0012h
  7071.     CX = selector for ???
  7072. Return: CX = selector for ???
  7073. --------E-2FFB42BX0013-----------------------
  7074. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7075.     AX = FB42h
  7076.     BX = 0013h
  7077.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7078.     DX = 1-based index of ???
  7079. Return: CX = status (see also AX=FB42h/BX=0004h)
  7080.         0000h successful
  7081.         BX = ??? or 0000h
  7082.         0002h invalid selector
  7083.         FFF9h ??? error
  7084. --------E-2FFB42BX0014-----------------------
  7085. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  7086.     AX = FB42h
  7087.     BX = 0014h
  7088.     CX = 0001h
  7089. Return: BX = 0000h if installed
  7090. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7091.       real or V86 mode
  7092. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  7093. --------E-2FFB42BX0015-----------------------
  7094. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  7095.     AX = FB42h
  7096.     BX = 0015h
  7097.     CX = 0001h
  7098. Return: ???
  7099. Note:    unlike most of the DPMILOAD functions, this call is available only in
  7100.       real or V86 mode
  7101. SeeAlso: AX=FB42h/BX=000Ah
  7102. --------E-2FFB42BX0016-----------------------
  7103. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7104.     AX = FB42h
  7105.     BX = 0016h
  7106.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7107. Return: DX = status (see also AX=FB42h/BX=0004h)
  7108.         0000h successful
  7109.         CX = ???
  7110. --------E-2FFB42BX0017-----------------------
  7111. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7112.     AX = FB42h
  7113.     BX = 0017h
  7114.     CX = ???
  7115.     DX = ???
  7116.     ???
  7117. Return: DX = status (0000h,0001h) (see below)
  7118. --------E-2FFB42BX0018-----------------------
  7119. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  7120.     AX = FB42h
  7121.     BX = 0018h
  7122.     CX = ???
  7123. --------E-2FFB42BX0019-----------------------
  7124. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7125.     AX = FB42h
  7126.     BX = 0019h
  7127.     CX = selector for ???
  7128.     ???
  7129. Return: DX = status (see also AX=FB42h/BX=0004h)
  7130.         0000h successful
  7131.         CX = selector for ???
  7132. --------E-2FFB42BX001A-----------------------
  7133. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7134.     AX = FB42h
  7135.     BX = 001Ah
  7136.     CX = selector for ???
  7137.     ???
  7138. Return: DX = status (see also AX=FB42h/BX=0004h)
  7139.         0000h successful
  7140.         0004h failed
  7141.     CX:BX -> ???
  7142. --------E-2FFB42BX001B-----------------------
  7143. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7144.     AX = FB42h
  7145.     BX = 001Bh
  7146.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7147.     DX = offset of ???
  7148. Return: DX = status (see also AX=FB42h/BX=0004h)
  7149.         0000h successful
  7150.         BX = selector for ???
  7151.         CX = selector for ???
  7152.         0002h invalid selector
  7153. --------E-2FFB42BX001C-----------------------
  7154. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7155.     AX = FB42h
  7156.     BX = 001Ch
  7157.     ES = selector for DPMILOAD data (see AX=FB42h/BX=0005h)
  7158.     CX = 1-based index of ???
  7159.     DX = 1-based index of ???
  7160. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  7161. --------E-2FFB42BX001D-----------------------
  7162. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7163.     AX = FB42h
  7164.     BX = 001Dh
  7165. Return: CX:DX = ???
  7166. --------E-2FFB42BX001E-----------------------
  7167. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7168.     AX = FB42h
  7169.     BX = 001Eh
  7170.     CX = ???
  7171.     ???
  7172. Return: DX = status (see also AX=FB42h/BX=0004h)
  7173.         0000h successful
  7174.         FFF7h ??? error
  7175.     CX:BX -> ???
  7176. --------E-2FFB42BX001F-----------------------
  7177. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  7178.     AX = FB42h
  7179.     BX = 001Fh
  7180.     DS:DX -> 8-character name of ???
  7181.     ???
  7182. Return: CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h) for ???
  7183.         0000h on error
  7184. SeeAlso: AX=FB42h/BX=000Eh
  7185. --------E-2FFB42BX0020-----------------------
  7186. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  7187.     AX = FB42h
  7188.     BX = 0020h
  7189. Return: DX = ??? (always 0000h)
  7190. --------E-2FFB42BX0021-----------------------
  7191. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  7192.     AX = FB42h
  7193.     BX = 0021h
  7194.     CL = exception number (00h-1Fh)
  7195. Return: DX = status (see also AX=FB42h/BX=0004h)
  7196.         0000h successful
  7197.         AX:BX = selector:offset of handler
  7198.         FFF2h unable to get exception handler vector
  7199. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  7200. --------E-2FFB42BX0022-----------------------
  7201. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  7202.     AX = FB42h
  7203.     BX = 0022h
  7204.     CL = exception number (00h-1Fh)
  7205.     SI:DX = selector:offset of new handler
  7206. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  7207. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  7208. --------E-2FFB42BX0023-----------------------
  7209. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  7210.     AX = FB42h
  7211.     BX = 0023h
  7212.     CX = selector
  7213. Return: DX = status (see also AX=FB42h/BX=0004h)
  7214.         0000h successful
  7215.         CX = real-mode segment number
  7216.         FFF2h descriptor has invalid base address for real-mode segment
  7217. SeeAlso: AX=FB42h/BX=0010h
  7218. --------E-2FFB42BX0024-----------------------
  7219. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  7220.     AX = FB42h
  7221.     BX = 0024h
  7222.     CL = interrupt number
  7223. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  7224.     AX:BX = selector:offset of handler
  7225. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  7226. --------E-2FFB42BX0025-----------------------
  7227. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  7228.     AX = FB42h
  7229.     BX = 0025h
  7230.     CL = interrupt number
  7231.     SI:DX = selector:offset of new handler
  7232. Return: DX = status (0000h,0004h,FFF2h) (see AX=FB42h/BX=0004h)
  7233. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  7234. --------E-2FFB42BX0026-----------------------
  7235. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  7236.     AX = FB42h
  7237.     BX = 0026h
  7238.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7239.     DX = 1-based index of ???
  7240.     ???
  7241. Return: DX = status (0000h,0002h,FFF9h) (see AX=FB42h/BX=0004h)
  7242.         0000h successful
  7243.         BX = offset of ??? within data structure
  7244. --------E-2FFB42BX0027-----------------------
  7245. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  7246.     AX = FB42h
  7247.     BX = 0027h
  7248.     CX = selector of DPMILOAD data (see AX=FB42h/BX=0005h)
  7249.     DX = offset of ???
  7250. Return: DX = status (see also AX=FB42h/BX=0004h)
  7251.         0000h successful
  7252.         BX = ???
  7253. --------E-2FFB42BX0080-----------------------
  7254. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7255.     AX = FB42h
  7256.     BX = 0080h
  7257.     ???
  7258. Return: AX = ???
  7259.     ???
  7260. --------E-2FFB42BX0081-----------------------
  7261. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  7262.     AX = FB42h
  7263.     BX = 0081h
  7264.     ???
  7265. Return: AX = ???
  7266.     ???
  7267. --------E-2FFB42BX1001-----------------------
  7268. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  7269.     AX = FB42h
  7270.     BX = 1001h
  7271. Return: BX = 0000h
  7272. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  7273. --------E-2FFB42BX1002-----------------------
  7274. INT 2F U - Borland RTM.EXE 1.0 - ???
  7275.     AX = FB42h
  7276.     BX = 1002h
  7277.     ???
  7278. Return: ???
  7279. SeeAlso: AX=FB42h/BX=1001h
  7280. --------E-2FFB42BX1003-----------------------
  7281. INT 2F U - Borland RTM.EXE 1.0 - ???
  7282.     AX = FB42h
  7283.     BX = 1003h
  7284.     ???
  7285. Return: ???
  7286. SeeAlso: AX=FB42h/BX=1001h
  7287. --------E-2FFB43-----------------------------
  7288. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  7289.     AX = FB43h
  7290.     BX = subfunction (at least 0000h-000Eh)
  7291. Notes:    this function is only present in protected mode; it does nothing but
  7292.       an immediate IRET
  7293.     DPMILOAD.EXE itself calls various subfunctions:
  7294.         subfunction 0004h is called with CX=selector of ???, DI=selector
  7295.         of DPMILOAD data
  7296.         subfunction 0008h is called with CX=selector of DPMILOAD data
  7297. SeeAlso: AX=FB42h/BX=0001h
  7298. --------G-2FFB43BX0100-----------------------
  7299. INT 2F PU - Borland TDX - INSTALLATION CHECK
  7300.     AX = FB43h
  7301.     BX = 0100h
  7302. Return: BX = FB43h if loaded
  7303. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  7304. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  7305.       should install their own stack and general protection exception
  7306.       handlers, or allow TDX to handle those exceptions
  7307. --------a-2FFB64-----------------------------
  7308. INT 2F U - AutoBraille v1.1A - GET ???
  7309.     AX = FB64h
  7310. Return: AX = ??? (0006h seen)
  7311. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  7312. --------E-2FFBA1BX0081-----------------------
  7313. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  7314.     AX = FBA1h
  7315.     BX = 0081h
  7316.     ES:DI -> 16-byte buffer
  7317. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  7318. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  7319. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  7320.       extender was moved into DPMILOAD.
  7321. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  7322. SeeAlso: INT 21/AX=4403h"TKERNEL"
  7323. --------E-2FFBA1BX0082-----------------------
  7324. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  7325.     AX = FBA1h
  7326.     BX = 0082h
  7327.     ES:DI -> response buffer (see below)
  7328. Return: ES:DI buffer filled
  7329. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7330.  
  7331. Format of response buffer:
  7332. Offset    Size    Description
  7333.  00h  4 BYTEs    signature "IABH"
  7334.  04h    DWORD    pointer to FAR extender entry point
  7335.  
  7336. Call entry point with:
  7337.     AX = function number
  7338.         0000h initialize???
  7339.         STACK:    WORD  ???
  7340.         Return: AX = status???
  7341.             STACK unchanged
  7342.         0001h get version???
  7343.         Return: AX = 0200h for v2.0.34
  7344.         0002h get ???
  7345.         Return: AX = ??? (011Eh or 0182h seen)
  7346.         0003h load protected-mode executable
  7347.         STACK:    DWORD -> ASCIZ filename of executable
  7348.             DWORD    ???
  7349.             DWORD -> program arguments (counted string plus CR)
  7350.             DWORD -> environment for protected-mode executable
  7351.                 (terminated with two consecutive NULs)
  7352.             DWORD -> WORD buffer for ???
  7353.         Return: AX = status???
  7354.             STACK unchanged
  7355.         0004h get descriptor
  7356.         STACK:    WORD    selector for which to get descriptor
  7357.             WORD    segment number (when running in real mode)
  7358.             DWORD -> buffer for descriptor
  7359.         Return: CF clear if successful
  7360.                 buffer filled
  7361.             CF set on error
  7362.                 AX destroyed???
  7363.             STACK unchanged
  7364.         0005h ???
  7365.         STACK:    WORD    selector for ???
  7366.             WORD    subfunction number???
  7367.                 0000h run previously-loaded program???
  7368.                 0001h ??? (similar to 0000h)
  7369.                 0002h
  7370.                 0003h
  7371.                 0005h ??? (similar to 0000h and 0001h)
  7372.         Return: AX = status???
  7373.             STACK unchanged
  7374.         0006h ???
  7375.         STACK:    WORD ???
  7376.             DWORD -> WORD (call) max iterations of ???
  7377.                       (return) remaining iterations
  7378.         Return: AX = ???
  7379.             STACK unchanged
  7380.         0007h unused
  7381.         Return: AX = 0001h
  7382.         0008h unused
  7383.         Return: AX = 0001h
  7384.         0009h copy protected-mode memory into conventional memory
  7385.         STACK:    WORD    selector for source segment
  7386.             WORD    segment of source if in real mode???
  7387.             DWORD    offset of source
  7388.             WORD    number of bytes to copy
  7389.             DWORD -> low-memory destination
  7390.         Return: AX = status
  7391.             STACK unchanged
  7392.         000Ah copy conventional memory into protected-mode memory
  7393.         STACK:    WORD    selector for destination segment
  7394.             WORD    segment of destination if in real mode???
  7395.             DWORD    offset of destination
  7396.             WORD    number of bytes to copy
  7397.             DWORD -> low-memory source
  7398.         Return: AX = status
  7399.             STACK unchanged
  7400.         000Bh get ??? pointers
  7401.         STACK:    WORD desired pointer
  7402.                 0000h get ???
  7403.                 0002h get protected-mode CR3
  7404.                 0003h get 4K page table buffer pointer
  7405.                 else Return: DX:AX = FFFFh:FFFFh
  7406.         Return: DX:AX = requested pointer
  7407.             STACK unchanged
  7408.         000Ch set ??? pointers
  7409.         STACK:    WORD desired pointer
  7410.                 0000h set ???
  7411.                 0002h set protected-mode CR3
  7412.                 0003h set 4K page table buffer pointer
  7413.                 else ignore
  7414.             DWORD new value for pointer
  7415.         Return: STACK unchanged
  7416.         000Dh get ??? pointers
  7417.         STACK:    WORD desired pointer
  7418.                 0000h get ???
  7419.                 0001h get ???
  7420.                 0002h get ???
  7421.                 0003h get ???
  7422.                 0004h get ???
  7423.                 0005h get ???
  7424.                 0006h get ???
  7425.                 0007h get ???
  7426.                 else Return: DX:AX = FFFFh:FFFFh
  7427.         Return: DX:AX = desired pointer
  7428.             STACK unchanged
  7429.         000Eh set ??? pointer
  7430.         STACK:    WORD desired pointer
  7431.                 0000h set ???
  7432.                 0001h set ???
  7433.                 0002h set ???
  7434.                 0003h set ???
  7435.                 0004h set ???
  7436.                 0005h set ???
  7437.                 0006h set ???
  7438.                 0007h set ???
  7439.                 else Return: DX:AX = FFFFh:FFFFh
  7440.         Return: STACK unchanged
  7441.         000Fh get ???
  7442.         Return: AX = ??? (seen 0008h)
  7443.         0010h get ???
  7444.         Return: AX = ???
  7445.         0011h determine whether selector is valid
  7446.         STACK:    WORD    possible selector
  7447.         Return: AX = selector or 0000h if invalid
  7448.             STACK unchanged
  7449.         0012h get physical address
  7450.         STACK:    WORD    selector for desired segment
  7451.             WORD    segment number if in real mode
  7452.             DWORD    offset within segment
  7453.         Return: DX:AX = 32-bit physical address or 00000000h on error
  7454.             BX destroyed
  7455.             STACK unchanged
  7456.         0013h ???
  7457.         Note:    normally jumps to code for function 0012h
  7458.         0014h copy protected-mode memory to conventional memory, with ???
  7459.         STACK:    WORD    selector for source segment
  7460.             WORD    segment of source if in real mode???
  7461.             DWORD    offset of source
  7462.             WORD    number of bytes to copy
  7463.             DWORD -> low-memory destination
  7464.         Return: AX = status???
  7465.             STACK unchanged
  7466.         0015h copy conventional memory to protected-mode memory, with ???
  7467.         STACK:    WORD    selector for destination segment
  7468.             WORD    segment of destination if in real mode???
  7469.             DWORD    offset of destination
  7470.             WORD    number of bytes to copy
  7471.             DWORD -> low-memory source
  7472.         Return: AX = status???
  7473.             STACK unchanged
  7474.         0016h set ??? pointer
  7475.         STACK:    WORD    unused
  7476.             DWORD -> ??? or 0000h:0000h
  7477.         Return: AX = 0000h
  7478.             STACK unchanged
  7479.         0017h allocate real-mode procedure???
  7480.         STACK:    DWORD    ASCIZ name of procedure
  7481.             DWORD ???
  7482.             DWORD    address of subroutine to invoke
  7483.         Return: AX = status
  7484.                 0032h procedure by that name exists
  7485.                 0033h no more real-mode procedures available
  7486.             DX destroyed
  7487.             STACK unchanged
  7488.         0018h unused
  7489.         Return: AX = 0001h
  7490.         0019h get parameter block
  7491.         Return: DX:AX -> parameter block (format unknown at this time,
  7492.                 but 92h bytes)
  7493.                 (preceded by signature "!!PARAM-BLOCK!!")
  7494.         001Ah get ???
  7495.         Return: AX = ??? (0148h seen)
  7496.         001Bh free real-mode procedure???
  7497.         STACK:    DWORD -> ASCIZ name of procedure
  7498.         Return: ???
  7499.             STACK unchanged
  7500.         001Ch check whether packets from protected mode task pending
  7501.         Return: AX = 0001h if packets pending, 0000h if not
  7502.         001Dh set ???
  7503.         STACK:    DWORD ??? or 0000h:0000h
  7504.         Return: AX,BX destroyed
  7505.             STACK unchanged
  7506.         001Eh ???
  7507.         STACK:    WORD ??? (high byte ignored)
  7508.             DWORD -> data structure (see below)
  7509.         Return: AX,BX,CX,DX destroyed
  7510.             data structure updated
  7511.             STACK unchanged
  7512.         Format of data structure
  7513.         Offset    Size    Description
  7514.          00h  2 BYTEs    unused
  7515.          02h    WORD    ???
  7516.          04h    WORD    ???
  7517.          06h    WORD    ???
  7518.          08h  2 BYTEs    unused
  7519.          0Ah    WORD    ???
  7520.          0Ch    WORD    (call) ???
  7521.                 (return) offset of this data structure (BUG?)
  7522.         001Fh set ???
  7523.         STACK:    WORD ??? (set to 0001h if zero)
  7524.         Return: AX destroyed
  7525.             STACK unchanged
  7526.         0020h ???
  7527.         STACK:    DWORD -> ??? (8 bytes of data)
  7528.         Return: AX = ???
  7529.             STACK unchanged
  7530.         0021h ???
  7531.         STACK:    DWORD -> ??? (8 bytes of data)
  7532.             WORD    ???
  7533.             WORD    ???
  7534.         Return: AX = ???
  7535.             STACK unchanged
  7536.         0022h ???
  7537.         STACK:    DWORD -> ??? (8 bytes of data)
  7538.             DWORD -> 4-byte buffer for results
  7539.         Return: AX = ???
  7540.             STACK unchanged
  7541.         0023h ???
  7542.         STACK:    DWORD -> ??? (8 bytes of data)
  7543.         Return: AX = ???
  7544.             STACK unchanged
  7545.         0024h set ???
  7546.         STACK:    WORD ???
  7547.         Return: AX destroyed
  7548.             STACK unchanged
  7549.         0025h get ???
  7550.         Return: AX = ??? (value set with func 0024h)
  7551.         0026h BUG: jumps to hyperspace due to fencepost error
  7552.         FFFFh set DOS memory management functions
  7553.         BX:SI -> FAR routine for allocating DOS memory
  7554.             (called with AH=48h,BX=number of paragraphs to alloc;
  7555.              returns CF clear, AX=segment of allocated memory, or
  7556.                  CF set on error)
  7557.         CX:DI -> FAR routine for freeing DOS memory
  7558.             (called with AH=49h,ES=segment of block to free;
  7559.              returns CF set on error,AX=error code)
  7560.         Note: each of these pointers normally points at INT 21/RETF
  7561.         other Return: AX = 0001h
  7562. Note:    BX may be destroyed by any of the API calls
  7563. --------E-2FFBA1BX0084-----------------------
  7564. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  7565.     AX = FBA1h
  7566.     BX = 0084h
  7567.     ES:DI -> response buffer (see below)
  7568. Return: ES:DI buffer filled
  7569. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  7570.  
  7571. Format of response buffer:
  7572. Offset    Size    Description
  7573.  00h  4 BYTEs    signature "IABH"
  7574.  04h    WORD    success indicator
  7575.         0001h failed (INT 2F hooked by another program)
  7576.         unchanged if successful
  7577.  06h    WORD    segment of ???
  7578.  08h    WORD    segment of ??? memory block to free if nonzero
  7579.  0Ah    WORD    segment of ??? memory block to free if nonzero
  7580. --------s-2FFBFBES0000-----------------------
  7581. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  7582.     AX = FBFBh
  7583.     ES = 0000h
  7584. Return: ES nonzero if installed
  7585.         ES:BX -> entry point data structure (see below)
  7586. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  7587.  
  7588. Format of entry point data structure:
  7589. Offset    Size    Description
  7590.  00h  3 BYTEs    signature "FB "
  7591.  03h    BYTE    driver major version number???
  7592.  04h    DWORD    speech driver entry point
  7593.  08h 24 BYTEs    ???
  7594.  20h  ? BYTEs    data buffer for calling speech driver
  7595.  
  7596. Call driver entry point with:
  7597.     AL = function
  7598.         07h speak a string
  7599.         data buffer (see above) contains:
  7600.             BYTE  length of string
  7601.               N BYTEs string to speak
  7602. --------N-2FFE00BX4454-----------------------
  7603. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7604.     AX = FE00h
  7605.     BX = 4454h ("DT")
  7606.     CX = 4B52h ("KR")
  7607.     DX = 4E4Dh ("NM")
  7608. Return: AL = FFh if installed
  7609.        BX = 524Eh ("RM")
  7610.        CX = 4D44h ("MD")
  7611.        DX = 544Bh ("TK")
  7612. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7613. SeeAlso: AX=FE08h
  7614. --------N-2FFE00BX4454-----------------------
  7615. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  7616.     AX = FE00h
  7617.     BX = 4454h ("DT")
  7618.     CX = 4B52h ("KR")
  7619.     DX = 544Dh ("TM")
  7620. Return: AL = FFh if installed
  7621.        BX = 5254h ("RT")
  7622.        CX = 4D44h ("MD")
  7623.        DX = 544Bh ("TK")
  7624. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7625. SeeAlso: AX=FE08h
  7626. --------U-2FFE00DI4E55-----------------------
  7627. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  7628.     AX = FE00h
  7629.     DI = 4E55h ("NU")
  7630.     SI = TSR identifier
  7631.         4346h ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7) / SPEEDRV
  7632.         4353h ("CS") NCACHE-S (v5 only)
  7633.         4443h ("DC") DISKREET
  7634.         444Dh ("DM") DISKMON
  7635.         4653h ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7)
  7636. Return: SI = TSR reply
  7637.         lowercase version of SI on entry (i.e. SI OR 2020h)
  7638.     AH = status
  7639.         00h installed but disabled internally
  7640.         01h installed and enabled
  7641.     AL = installed product
  7642.         00h NCACHE-x or DISKREET
  7643.         01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
  7644.         02h NCACHE2 / SMARTCAN
  7645.         45h DISKMON v5 installed
  7646.     BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
  7647.         (see below)
  7648.     CX = segment of resident portion
  7649.         FFFFh if completely loaded high (NCACHE)
  7650. ---FILESAVE/EP---
  7651.     DL = ??? (apparently always 00h)
  7652. ---DISKMON---
  7653.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
  7654. Notes:    the value returned in CX is incorrect for NCACHE 6.00
  7655.     all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
  7656.     NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
  7657. SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  7658. SeeAlso: INT 21/AX=4402h"SMARTDRV"
  7659.  
  7660. Format of DISKMON.INI file:
  7661. Offset    Size    Description
  7662. -6Ch 108 BYTEs    (in memory copy only)
  7663.         list of filenames which are always protected:
  7664.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  7665.           MIO.SYS/IO.BIN, COMMAND.COM
  7666.  00h    BYTE    ??? always 01h
  7667.  01h    BYTE    disk light (00h off, 01h on)
  7668.  02h    BYTE    disk protection (00h off, 01h on)
  7669.  03h    BYTE    protected areas
  7670.         01h system area
  7671.         02h files
  7672.         03h system area and files
  7673.         04h entire disk
  7674.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  7675.  05h 27 BYTEs    filename extension list (9 entries)
  7676.         (lowercase, blank padded or = 000000h)
  7677.  20h 240 BYTEs    filename list (20 entries)
  7678.         (lowercase, name and extension blank padded, with '.')
  7679. Note:    CX:0508h -> copy in installed TSR (v5)
  7680.     CX:052Fh -> copy in installed TSR (v6)
  7681.     CX:04E0h -> copy in installed TSR (v7)
  7682.  
  7683. Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
  7684. Offset    Size    Description
  7685.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  7686.  00h    BYTE    drives    A: - H:
  7687.  01h    BYTE    drives    I: - P:
  7688.  02h    BYTE    drives    Q: - X:
  7689.  03h    BYTE    drives    Y: - Z:
  7690.  04h    BYTE    which files to protect
  7691.         00h all files
  7692.         01h all files with extension in list
  7693.         02h all files except those with extension in list
  7694.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  7695.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  7696.  21h    WORD    number of days after which files are purged (0 = never)
  7697.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  7698. Note:    CX:03D2h -> copy in installed TSR (v5)
  7699.     CX:03F5h -> copy in installed TSR (v6)
  7700.     CX:0434h -> copy in installed TSR (v7)
  7701. --------U-2FFE01DI4E55-----------------------
  7702. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  7703.     AX = FE01h
  7704.     DI = 4E55h ("NU")
  7705.     SI = TSR identifier (see AX=FE00h)
  7706. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7707.     AX = status
  7708.         0002h successful (DISKMON, FILESAVE, EP)
  7709.         FE00h successful (NCACHE-x, DISKREET)
  7710. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  7711.       report generated by the programs still indicates the previous state,
  7712.       and DISKMON.INI is not updated
  7713.     apparently has no effect on DISKREET
  7714. SeeAlso: AX=FE00h,AX=FE02h
  7715. --------U-2FFE02DI4E55-----------------------
  7716. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  7717.     AX = FE02h
  7718.     DI = 4E55h ("NU")
  7719.     SI = TSR identifier (see AX=FE00h)
  7720. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7721.     AX = status
  7722.         0004h successful (DISKMON, FILESAVE)
  7723.         FE00h successful (NCACHE-x, DISKREET)
  7724. Notes:    (see also AX=FE01h)
  7725.     this function appears to be unsafe, as the cache buffers are not
  7726.       flushed
  7727. SeeAlso: AX=FE00h,AX=FE01h
  7728. --------U-2FFE03DI4E55-----------------------
  7729. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  7730.     AX = FE03h
  7731.     DI = 4E55h ("NU")
  7732.     SI = TSR identifier (see AX=FE00h)
  7733. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  7734.     AX = status
  7735.         0006h successful???
  7736. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  7737.     useful for flushing NCACHE before rebooting
  7738. SeeAlso: AX=FE00h,AX=FE10h
  7739. --------U-2FFE04DI4E55-----------------------
  7740. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7741.     AX = FE04h
  7742.     DI = 4E55h ("NU")
  7743.     SI = TSR identifier (see AX=FE00h)
  7744. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7745.     AX = status
  7746.         0008h successful???
  7747. SeeAlso: AX=FE00h
  7748. --------U-2FFE05DI4E55-----------------------
  7749. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  7750.     AX = FE05h
  7751.     DI = 4E55h ("NU")
  7752.     SI = TSR identifier (see AX=FE00h)
  7753. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7754.     AX = status
  7755.         000Ah successful???
  7756. Note:    reportedly dangerous
  7757. SeeAlso: AX=FE00h
  7758. --------N-2FFE08-----------------------------
  7759. INT 2F - PC-NFS ??? - GET ???
  7760.     AX = FE08h
  7761. Return: ES:BX -> ???
  7762. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  7763.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  7764.       to AX=FE00h/DX=544Dh support this function
  7765. SeeAlso: AX=FE00h/BX=4454h
  7766. --------U-2FFE10DI4E55-----------------------
  7767. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  7768.     AX = FE10h
  7769.     DI = 4E55h ("NU")
  7770.     SI = TSR identifier (see AX=FE00h)
  7771. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  7772.     AX = status
  7773. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  7774.       detected
  7775. SeeAlso: AX=FE03h
  7776. --------N-2FFF00-----------------------------
  7777. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  7778.     AX = FF00h
  7779. Return: AL = 00h not installed, OK to install
  7780.        = 01h not installed, not OK to install
  7781.        = FFh installed
  7782. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF02h,INT 7A"Topware"
  7783. --------N-2FFF01-----------------------------
  7784. INT 2F - Topware Network Operating System - GET VERSION
  7785.     AX = FF01h
  7786. Return: AX = version
  7787. SeeAlso: AX=FF00h,AX=FF02h
  7788. --------N-2FFF02-----------------------------
  7789. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  7790.     AX = FF02h
  7791. Return: ES:BX -> version string
  7792. SeeAlso: AX=FF00h,AX=FF01h
  7793. --------N-2FFF10-----------------------------
  7794. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  7795.     AX = FF10h
  7796. Return: AL = status (00h not installed, 01h installed)
  7797. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  7798. --------N-2FFF11-----------------------------
  7799. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  7800.     AX = FF11h
  7801. Note:    this function is only available on workstations, not on the server
  7802. SeeAlso: AX=FF10h,AX=FF12h
  7803. --------N-2FFF12-----------------------------
  7804. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  7805.     AX = FF12h
  7806. Note:    this function is only available on workstations, not on the server
  7807. SeeAlso: AX=FF10h,AX=FF11h
  7808. --------N-2FFF13-----------------------------
  7809. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  7810.     AX = FF13h
  7811.     CL = new state (00h off, 01h on)
  7812. SeeAlso: AX=FF10h
  7813. --------N-2FFF14-----------------------------
  7814. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  7815.     AX = FF14h
  7816. Note:    this function is only available on workstations, not on the server
  7817. SeeAlso: AX=FF10h,AX=FF15h
  7818. --------N-2FFF15-----------------------------
  7819. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  7820.     AX = FF15h
  7821. Note:    this function is only available on workstations, not on the server
  7822. SeeAlso: AX=FF10h,AX=FF14h
  7823. --------N-2FFF16-----------------------------
  7824. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  7825.     AX = FF16h
  7826.     BL = which to set (00h TopShow, FFh TopTerm)
  7827.     CX = destination screen
  7828.         0000h all stations
  7829.         0000h-00FFh (TopTerm only) send to group CL
  7830.         8001h-80FEh send to station CL
  7831. SeeAlso: AX=FF18h
  7832. --------N-2FFF18-----------------------------
  7833. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  7834.     AX = FF18h
  7835. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  7836. --------N-2FFF23-----------------------------
  7837. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  7838.     AX = FF23h
  7839. SeeAlso: AX=FF00h
  7840. --------N-2FFF27-----------------------------
  7841. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  7842.     AX = FF27h
  7843. Return: AL = type (00h complete version, 01h simple version)
  7844.     BL = "show" functions flag (00h disabled, 01h enabled)
  7845. SeeAlso: AX=FF16h,AX=FF18h
  7846. --------!------------------------------------
  7847.